map容器存入结构体并遍历
时间: 2023-08-11 14:59:00 浏览: 50
要将结构体存储在 map 容器中并进行遍历,你需要定义一个自定义的比较函数(可选)和一个结构体作为 map 的值类型。下面是一个示例:
```cpp
#include <iostream>
#include <map>
#include <string>
// 定义结构体
struct Person {
std::string name;
int age;
};
// 自定义比较函数
struct ComparePerson {
bool operator()(const Person& p1, const Person& p2) const {
return p1.age < p2.age;
}
};
int main() {
// 定义 map 容器,键为 int 类型,值为 Person 结构体类型
std::map<int, Person, ComparePerson> personMap;
// 添加元素到 map 容器中
personMap[1] = {"Alice", 25};
personMap[2] = {"Bob", 30};
personMap[3] = {"Charlie", 20};
// 遍历 map 容器中的元素
for (const auto& pair : personMap) {
std::cout << "Key: " << pair.first << ", Name: " << pair.second.name << ", Age: " << pair.second.age << std::endl;
}
return 0;
}
```
在上述示例中,我们定义了一个名为 `Person` 的结构体,其中包含了一个字符串类型的 name 和一个整数类型的 age。然后,我们定义了一个自定义的比较函数 `ComparePerson`,用于按照年龄进行比较。
接下来,在定义 map 容器时,我们指定了键的类型为 int,值的类型为 Person 结构体,并使用 `ComparePerson` 作为比较函数。
然后,我们向 map 容器中插入了几个键值对。最后,使用范围遍历(range-based for loop)输出了 map 容器中的元素,包括键、name 和 age。
希望这个示例能帮助你将结构体存储在 map 容器中并进行遍历!如果有任何进一步的问题,请随时提问。