帮我用c++ 快速给vector 加入结构体作为元素,并且给vector 进行排序
时间: 2023-08-02 21:18:31 浏览: 103
c++08.xcodeproj_结构体变量排序_源码
当我们要使用结构体作为 vector 的元素时,需要先定义结构体类型,然后通过 push_back() 或 emplace_back() 函数将结构体对象添加到 vector 中。而对于 vector 的排序操作,可以使用 STL 中的 sort() 函数来实现。下面是一个示例代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Person {
string name;
int age;
// 重载小于号运算符,用于排序
bool operator<(const Person& other) const {
return age < other.age;
}
};
int main() {
vector<Person> people;
// 添加元素
people.push_back({"Alice", 20});
people.emplace_back("Bob", 30);
people.emplace_back("Charlie", 25);
// 排序
sort(people.begin(), people.end());
// 遍历输出
for (const auto& p : people) {
cout << p.name << " is " << p.age << " years old." << endl;
}
return 0;
}
```
在上面的代码中,我们定义了一个结构体类型 `Person`,然后创建了一个 vector 对象 `people`。我们使用 `push_back()` 和 `emplace_back()` 函数将三个 `Person` 对象添加到 `people` 中。
为了能够对 vector 进行排序,我们在 `Person` 结构体中重载了小于号运算符,以便在 `sort()` 函数中使用。在本例中,我们按照年龄从小到大排序。
最后,我们使用 `for` 循环遍历输出排序后的 vector。输出结果如下:
```
Alice is 20 years old.
Charlie is 25 years old.
Bob is 30 years old.
```
需要注意的是,重载小于号运算符是排序操作的关键,如果不重载该运算符,sort() 函数将无法对 vector 进行排序。而且,在实际应用中,我们可以根据需要重载其他运算符,例如大于号、等于号、不等于号等,以便能够更灵活地对 vector 进行排序。
阅读全文