用vector来遍历map
时间: 2024-07-09 16:00:25 浏览: 64
在C++中,`std::map`是一个关联容器,用于存储键值对,其中键和值是成对出现的。而`std::vector`是一个动态数组,用于存储同类型的数据。通常情况下,你不会直接使用`vector`遍历`map`,因为它们的结构不同。`map`的键值对是按照键的排序顺序存储的,而`vector`是线性的。
但是,如果你想遍历`map`的所有元素并保存到一个`vector`中,你可以这样做:
```cpp
std::map<KeyType, ValueType> myMap;
std::vector<std::pair<KeyType, ValueType>> mapElements;
// 遍历map并添加元素到vector
for (const auto& pair : myMap) {
mapElements.push_back(pair);
}
// 现在你可以遍历vector来访问map中的元素
for (const auto& element : mapElements) {
KeyType key = element.first; // 键
ValueType value = element.second; // 值
// 对key和value进行操作...
}
```
在这里,我们创建了一个`vector`来存储`map`中的`std::pair`(键值对),然后通过`map`的迭代器将每个元素添加到`vector`中。
如果你的问题是问如何只获取`map`的键或值,并保存到`vector`,你可以分别这样做:
- 获取键:
```cpp
std::vector<KeyType> keys;
for (const auto& pair : myMap) {
keys.push_back(pair.first);
}
// 或者
std::vector<KeyType> keys(myMap.size());
std::transform(myMap.begin(), myMap.end(), keys.begin(), [](const auto& p) { return p.first; });
```
- 获取值:
```cpp
std::vector<ValueType> values;
for (const auto& pair : myMap) {
values.push_back(pair.second);
}
// 或者
std::vector<ValueType> values(myMap.size());
std::transform(myMap.begin(), myMap.end(), values.begin(), [](const auto& p) { return p.second; });
```
阅读全文