Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การจัดเรียง Vector เรียงจากมากไปน้อยด้วย STL ใน C++

การจัดเรียง Vector เรียงจากมากไปน้อย (Sort Vector in Descending Order) ด้วย STL

ใช้ std::sort จาก <algorithm> พร้อม comparator std::greater<T>()

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;

int main() {
    vector<int> a = { 1, 45, 54, 71, 76, 12 };
    cout << "Vector: ";
    for (int i = 0; i < a.size(); i++) cout << a[i] << " ";
    cout << endl;
    
    // เรียงจากมากไปน้อย
    sort(a.begin(), a.end(), greater<int>());
    
    cout << "Sorted Vector in descending order: ";
    for (int i = 0; i < a.size(); i++) cout << a[i] << " ";
    cout << endl;
    return 0;
}

ผลลัพธ์

Vector: 1 45 54 71 76 12
Sorted Vector in descending order: 76 71 54 45 12 1

คำอธิบาย

  • sort(begin, end) เรียงน้อยไปมาก (default ใช้ operator<)
  • sort(begin, end, greater<int>()) เรียงมากไปน้อย
  • greater<T> เป็น functor ที่ทำ a > b
  • หรือใช้ lambda: sort(a.begin(), a.end(), [](int a, int b){ return a > b; });

ประเภทข้อมูลอื่นๆ

  • ทำงานกับ built-in types (int, double, char, ฯลฯ)
  • ทำงานกับ custom types ที่มี operator> หรือให้ comparator เอง