std::sort ব্যবহার করে কাস্টম অবজেক্টের ভেক্টর সোর্ট করা যায়। ওভারলোডেড ভার্সন কম্পারেটর (comparator) নেয়।
উদাহরণ (C++11 Lambda)
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
struct MyStruct {
int key;
string data;
MyStruct(int k, string d) : key(k), data(d) {}
};
int main() {
vector<MyStruct> vec;
vec.emplace_back(4, "test");
vec.emplace_back(2, "is");
vec.emplace_back(3, "a");
vec.emplace_back(1, "this");
sort(vec.begin(), vec.end(), [](const MyStruct& lhs, const MyStruct& rhs) {
return lhs.key < rhs.key;
});
for(auto &it : vec)
cout << it.data << endl;
}
আউটপুট
this is a test
পুরানো C++ (ফাংশন পয়েন্টার)
bool comparator(const MyStruct& lhs, const MyStruct& rhs) {
return lhs.key < rhs.key;
}
sort(vec.begin(), vec.end(), comparator);
অপারেটর ওভারলোডিং (operator<)
স্ট্রাক্টে bool operator<(const MyStruct& other) const ওভারলোড করলে sort(vec.begin(), vec.end()) সরাসরি কাজ করবে।