คุณสามารถจัดเรียงเวกเตอร์ของวัตถุที่กำหนดเองได้โดยใช้ฟังก์ชัน C++ STL std::sort ฟังก์ชัน sort มีรูปแบบที่โอเวอร์โหลดซึ่งใช้เป็นอาร์กิวเมนต์ก่อน ตัวสุดท้าย ตัวเปรียบเทียบ ตัวแรกและตัวสุดท้ายเป็นตัววนซ้ำองค์ประกอบแรกและสุดท้ายของคอนเทนเนอร์ ตัวเปรียบเทียบเป็นฟังก์ชันเพรดิเคตที่สามารถใช้เพื่อบอกวิธีการจัดเรียงคอนเทนเนอร์
ตัวอย่าง
#include<iostream> #include<algorithm> #include<vector> using namespace std; struct MyStruct { int key; string data; MyStruct(int key, string data) { this -> key = key; this -> data = data; } }; int main() { std::vector<MyStruct> vec; vec.push_back(MyStruct(4, "test")); vec.push_back(MyStruct(2, "is")); vec.push_back(MyStruct(3, "a")); vec.push_back(MyStruct(1, "this")); // Using lambda expressions in C++11 sort(vec.begin(), vec.end(), [](const MyStruct& lhs, const MyStruct& rhs) { return lhs.key < rhs.key; }); for(auto it = vec.begin(); it != vec.end(); it++) { cout << it -> data << endl; } }
ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
this is a test
หากคุณกำลังใช้งาน C++ เวอร์ชันเก่า คุณสามารถส่งการอ้างอิงฟังก์ชันได้เช่นกัน -
//define the function: bool comparator(const MyStruct& lhs, const MyStruct& rhs) { return lhs.key < rhs.key; } // pass it to sort: sort(vec.begin(), vec.end(), &comparator);
คุณยังสามารถโอเวอร์โหลดตัวดำเนินการ <ในคลาส/struct และใช้แบบฟอร์ม sort(first, last) ได้โดยตรง ดังนั้นเมื่อทำการเรียงลำดับ จะใช้ฟังก์ชันนี้เพื่อเปรียบเทียบรายการ