在 C++ 中,你可以通过重载 operator<
来实现复杂的比较操作。这里有一个简单的例子,展示了如何为一个自定义结构体实现 less
比较操作:
#include#include #include struct Person { std::string name; int age; }; // 重载 operator< 运算符 bool operator<(const Person &a, const Person &b) { // 先比较年龄 if (a.age < b.age) { return true; } else if (a.age > b.age) { return false; } else { // 如果年龄相同,则按名字的字母顺序排序 return a.name < b.name; } } int main() { std::vector people = {{"Alice", 30}, {"Bob", 25}, {"Charlie", 30}}; // 使用 std::sort 对 people 进行排序 std::sort(people.begin(), people.end()); // 输出排序后的结果 for (const auto &person : people) { std::cout<< person.name << " "<< person.age<< std::endl; } return 0; }
在这个例子中,我们定义了一个 Person
结构体,并重载了 operator<
运算符。这个运算符首先比较两个 Person
对象的年龄,如果年龄相同,则按照名字的字母顺序进行排序。然后我们使用 std::sort
函数对一个包含 Person
对象的 std::vector
进行排序,并输出排序后的结果。