以下是一个示例代码,通过自定义比较函数来比较一个类的std::vector中不同属性的类。
#include
#include
#include
class MyClass {
public:
int id;
std::string name;
double value;
MyClass(int id, std::string name, double value)
: id(id), name(name), value(value) {}
};
bool compareById(const MyClass& a, const MyClass& b) {
return a.id < b.id;
}
bool compareByName(const MyClass& a, const MyClass& b) {
return a.name < b.name;
}
bool compareByValue(const MyClass& a, const MyClass& b) {
return a.value < b.value;
}
int main() {
std::vector myVector = {
MyClass(2, "John", 3.14),
MyClass(1, "Alice", 2.71),
MyClass(3, "Bob", 1.41)
};
// 按照id排序并输出
std::sort(myVector.begin(), myVector.end(), compareById);
std::cout << "Sort by id:" << std::endl;
for (const auto& obj : myVector) {
std::cout << obj.id << " " << obj.name << " " << obj.value << std::endl;
}
std::cout << std::endl;
// 按照name排序并输出
std::sort(myVector.begin(), myVector.end(), compareByName);
std::cout << "Sort by name:" << std::endl;
for (const auto& obj : myVector) {
std::cout << obj.id << " " << obj.name << " " << obj.value << std::endl;
}
std::cout << std::endl;
// 按照value排序并输出
std::sort(myVector.begin(), myVector.end(), compareByValue);
std::cout << "Sort by value:" << std::endl;
for (const auto& obj : myVector) {
std::cout << obj.id << " " << obj.name << " " << obj.value << std::endl;
}
return 0;
}
上述代码定义了一个名为MyClass的类,包含id、name和value三个属性。然后定义了三个比较函数compareById、compareByName和compareByValue,分别用于按照id、name和value进行比较。
在main函数中,创建了一个包含三个MyClass对象的std::vector,并且分别使用std::sort函数按照id、name和value进行排序,并输出结果。