unordered_multimap从迭代器中取值
时间: 2023-06-28 15:16:16 浏览: 46
要从`unordered_multimap`中的迭代器中取值,可以使用`->`或`*`运算符。例如,假设`umap`是一个`unordered_multimap<int, string>`类型的容器,`it`是指向某个元素的迭代器,可以使用以下方式从迭代器中取值:
使用`->`运算符:
```c++
cout << it->first << ": " << it->second << endl;
```
使用`*`运算符:
```c++
cout << (*it).first << ": " << (*it).second << endl;
```
这两种方式都可以从迭代器中获取键和值。`->`运算符用来访问迭代器所指向元素的成员变量,`*`运算符用来解引用迭代器获取所指向的元素。
相关问题
unordered_multimap迭代
`unordered_multimap`是不保证元素顺序的容器,因此使用迭代器遍历元素时不一定能够按照插入顺序遍历,但可以保证元素不会重复。要使用迭代器遍历`unordered_multimap`中的元素,可以使用以下方法:
```c++
unordered_multimap<int, string> umap = {{1, "one"}, {2, "two"}, {3, "three"}};
// 使用 auto 关键字定义迭代器类型
for (auto it = umap.begin(); it != umap.end(); ++it) {
cout << it->first << ": " << it->second << endl;
}
```
这里使用`auto`关键字定义迭代器类型,可以自动推导出正确的类型。`begin()`函数返回指向第一个元素的迭代器,`end()`函数返回指向最后一个元素之后的迭代器。在遍历时,需要使用`++`运算符将迭代器指向下一个元素。
如果需要逆序遍历`unordered_multimap`中的元素,则可以使用`rbegin()`和`rend()`函数:
```c++
for (auto it = umap.rbegin(); it != umap.rend(); ++it) {
cout << it->first << ": " << it->second << endl;
}
```
这里的`rbegin()`函数返回指向最后一个元素的反向迭代器,`rend()`函数返回指向第一个元素之前的反向迭代器。需要使用反向迭代器遍历时,同样需要使用`++`运算符将迭代器指向前一个元素。
unordered_multimap 和map的差异
unordered_multimap和map都是C++中的关联容器,用于存储键值对。它们之间的主要差异有以下几点:
1. 排序方式:map是有序容器,根据键值进行排序;而unordered_multimap是无序容器,不进行排序。
2. 插入和查找效率:由于unordered_multimap使用哈希表实现,插入和查找元素的平均时间复杂度为O(1);而map使用红黑树实现,插入和查找元素的平均时间复杂度为O(log n)。
3. 元素唯一性:map要求键值对的键是唯一的,如果插入重复的键,则会覆盖原有键的值;而unordered_multimap允许键值对的键重复。
4. 迭代器失效:插入或删除元素后,map的迭代器仍然有效;而unordered_multimap的迭代器可能会失效,因为哈希表的重新哈希操作可能会导致元素重新分布。
5. 内存占用:由于unordered_multimap使用哈希表实现,其内存占用比map更高。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)