I have a struct-based vector with 7 fields (strings). I need to sort by 5 of these fields. Easy in SQL, but not quite as simple in a vector, I think.
I found this code via google and was wondering if it's a good basis for my need.
Code:#include <algorithm> #include <vector> #include <cstdlib> class MyClass { public: double value1; double value2; double value3; // Friends not necessary with public data, // required with private data. friend bool less1(const MyClass& a, const MyClass& b); friend bool less2(const MyClass& a, const MyClass& b); friend bool less3(const MyClass& a, const MyClass& b); friend bool less_sum(const MyClass& a, const MyClass& b); }; inline bool less1(const MyClass& a, const MyClass& b) { return a.value1 < b.value1; } inline bool less2(const MyClass& a, const MyClass& b) { return a.value2 < b.value2; } inline bool less3(const MyClass& a, const MyClass& b) { return a.value3 < b.value3; } inline bool lessSum(const MyClass& a, const MyClass& b) { return (a.value1 + a.value2 + a.value3) < (b.value1 + b.value2 + b.value3); } main() { std::vector<MyClass> mcVec(10); // Sort by value1 std::sort(mcVec.begin(), mcVec.end(), less1); // Sort by value2 std::sort(mcVec.begin(), mcVec.end(), less2); // Sort by value3 std::sort(mcVec.begin(), mcVec.end(), less3); // Sort by sum of all three values std::sort(mcVec.begin(), mcVec.end(), lessSum); return EXIT_SUCCESS; } // end main()



LinkBack URL
About LinkBacks


