c++中用sort对一个struct数组排序,按其中的成员name的字典序
时间: 2024-09-07 14:06:39 浏览: 71
在C++中,如果你想要使用`std::sort`函数对一个`struct`数组按照其中的成员`name`的字典序进行排序,你需要提供一个比较函数或者重载`operator<`。这里有一个简单的例子来展示如何实现这一点:
首先定义你的`struct`,确保它包含一个`std::string`类型的成员变量`name`:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
struct MyStruct {
std::string name;
// 可以添加更多的成员变量
};
```
然后,你可以使用自定义的比较函数来对`struct`数组进行排序:
```cpp
bool compareByName(const MyStruct& a, const MyStruct& b) {
return a.name < b.name;
}
int main() {
MyStruct array[] = {{"banana"}, {"apple"}, {"cherry"}};
size_t size = sizeof(array) / sizeof(array[0]);
std::sort(array, array + size, compareByName);
// 打印排序后的结果
for (size_t i = 0; i < size; ++i) {
std::cout << array[i].name << std::endl;
}
return 0;
}
```
在这个例子中,`compareByName`函数按照`name`成员的字典序进行比较。然后,我们使用`std::sort`,它接受数组的开始和结束迭代器以及比较函数作为参数来对数组进行排序。
另外一种方法是重载`operator<`,这样你可以直接使用`std::sort`而不传递比较函数:
```cpp
struct MyStruct {
std::string name;
// 添加比较运算符
bool operator<(const MyStruct& other) const {
return name < other.name;
}
};
// 使用std::sort时不需要额外的比较函数
std::sort(array, array + size);
```
在这种情况下,`std::sort`将使用重载的`operator<`来比较`MyStruct`对象。
阅读全文
相关推荐

















