stl容器不能容纳结构体
时间: 2024-04-01 07:13:36 浏览: 64
这个说法是不准确的。STL容器可以容纳结构体,甚至可以容纳自定义的数据类型。只要满足以下条件:
1. 该结构体或自定义数据类型支持拷贝构造函数和赋值操作符重载;
2. 该结构体或自定义数据类型支持小于(<)运算符重载。
例如,下面的代码演示了如何用vector容器存储一个自定义的结构体类型:
```cpp
#include <iostream>
#include <vector>
struct Person {
std::string name;
int age;
};
bool operator<(const Person& p1, const Person& p2) {
return p1.age < p2.age;
}
int main() {
std::vector<Person> people;
people.push_back({"Alice", 25});
people.push_back({"Bob", 30});
people.push_back({"Charlie", 20});
std::sort(people.begin(), people.end());
for (auto& p : people) {
std::cout << p.name << " " << p.age << std::endl;
}
return 0;
}
```
输出:
```
Charlie 20
Alice 25
Bob 30
```
可以看到,我们成功地用vector容器存储了一个自定义的结构体类型,并且通过重载小于运算符,可以使用sort函数对其进行排序。
阅读全文