std::multimap 打印所有元素
时间: 2023-04-11 22:00:32 浏览: 141
可以使用迭代器遍历 multimap 中的所有元素,然后打印出来。以下是示例代码:
```c++
#include <iostream>
#include <map>
int main() {
std::multimap<int, std::string> myMap = {{1, "apple"}, {2, "banana"}, {1, "orange"}};
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << it->first << " : " << it->second << std::endl;
}
return 0;
}
```
输出结果为:
```
1 : apple
1 : orange
2 : banana
```
相关问题
std::multimap<int,char*>m2; std::map<int,std::multimap<int,char*>>m1;怎么才能获取m1中的multimap中的char*的值
在C++中,`std::multimap` 是一个可以存储键值对的容器,其中键是唯一的,但每个键可以关联多个值。`std::map` 是一个键唯一,每个键关联单个值的容器。
要从 `std::map<int,std::multimap<int,char*>>` 类型的 `m1` 中获取所有的 `char*` 值,你需要遍历 `m1` 的每一个元素。对于 `m1` 中的每个元素(即每一个 `std::multimap<int,char*>`),再遍历这个子 `multimap`,获取所有的 `char*` 值。下面是一个简单的示例代码:
```cpp
#include <iostream>
#include <map>
#include <multimap>
#include <string>
int main() {
std::map<int,std::multimap<int,char*>> m1;
// 假设m1已经被填充了一些数据
// 例如:
// m1[1].insert(std::make_pair(10, new char[]{"value10_1"}));
// m1[1].insert(std::make_pair(11, new char[]{"value11_1", "value11_2"}));
// ...
// 遍历m1
for (const auto& pair : m1) {
// pair.first 是键(int)
// pair.second 是子multimap(std::multimap<int,char*>)
// 遍历子multimap
for (const auto& sub_pair : pair.second) {
// sub_pair.first 是子multimap的键(int)
// sub_pair.second 是指向字符数组的指针(char*)
// 逐个打印字符数组中的字符
for (char* p = sub_pair.second; *p != '\0'; ++p) {
std::cout << *p << " ";
}
std::cout << std::endl;
}
}
// 注意:这里没有进行内存释放,实际使用时应该小心管理内存,避免内存泄漏。
return 0;
}
```
在使用上述代码时,请注意动态分配的内存在使用完毕后应该被适当地释放,以避免内存泄漏。
如何遍历unordered_multimap中所有元素?
要遍历 `unordered_multimap` 中的所有元素,可以使用迭代器来完成。使用循环来遍历从 `begin()` 到 `end()` 的所有元素。
以下是示例代码:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_multimap<int, std::string> myMap;
myMap.insert(std::make_pair(1, "apple"));
myMap.insert(std::make_pair(2, "banana"));
myMap.insert(std::make_pair(1, "orange"));
myMap.insert(std::make_pair(3, "grape"));
myMap.insert(std::make_pair(1, "melon"));
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << it->second << std::endl;
}
return 0;
}
```
在上面的示例中,我们创建了一个 `unordered_multimap` 并插入了一些键值对。然后,我们使用循环遍历从 `begin()` 到 `end()` 的所有元素,并打印每个元素的值。
输出将是:
```
apple
orange
melon
banana
grape
```
这样,你就可以遍历 `unordered_multimap` 中的所有元素了。
阅读全文