阅读量:80
在 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 class="hljs-keyword">return true;
} else if (a.age > b.age) {
return false;
} else {
// 如果年龄相同,则按名字的字母顺序排序
return a.name < b class="hljs-function">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 class="hljs-string">" "<< person class="hljs-keyword">return 0;
}
在这个例子中,我们定义了一个 Person 结构体,并重载了 operator< 运算符。这个运算符首先比较两个 Person 对象的年龄,如果年龄相同,则按照名字的字母顺序进行排序。然后我们使用 std::sort 函数对一个包含 Person 对象的 std::vector 进行排序,并输出排序后的结果。