如何用C++实现less复杂比较
导读:在 C++ 中,你可以通过重载 operator< 来实现复杂的比较操作。这里有一个简单的例子,展示了如何为一个自定义结构体实现 less 比较操作: #include<iostream> #include<vect...
在 C++ 中,你可以通过重载 operator<
来实现复杂的比较操作。这里有一个简单的例子,展示了如何为一个自定义结构体实现 less
比较操作:
#include<
iostream>
#include<
vector>
#include<
algorithm>
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<
Person>
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
进行排序,并输出排序后的结果。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何用C++实现less复杂比较
本文地址: https://pptw.com/jishu/699418.html