unordered_multimap学习
转自:https://blog.csdn.net/qq_41855420/article/details/89792468
1.介绍
unordered_multimap 是无序关联容器,一个key可以和多个value对应。
2.示例
如果有重复的key:
#include<iostream> #include<unordered_map> using namespace std; int main() { unordered_multimap<int, int> myUnorderedMultiMap = { {2, 10},{2, 100}, {2, 200}, {1, 20},{3,30} }; cout << "键值对序列:" << endl; for (auto &item : myUnorderedMultiMap) { cout << item.first << " -> " << item.second << endl; } cout << "myUnorderedMultiMap.count(1) = " << myUnorderedMultiMap.count(1) << endl; cout << "myUnorderedMultiMap.find(2) == myUnorderedMultiMap.end() ? " << (myUnorderedMultiMap.find(2) == myUnorderedMultiMap.end()) << endl; //寻找键为2的值 cout << "键 == 2 对应的值:"; pair<unordered_multimap<int, int>::iterator, unordered_multimap<int, int>::iterator> myRange;//用range来访问 myRange = myUnorderedMultiMap.equal_range(2); cout << endl; for (auto it = myRange.first; it != myRange.second; ++it) {//first表示开始位置的迭代器,end是结束位置的迭代器 cout << it->first << " -> " << it->second << endl; } cout << "unordered_multimap中一个key能对应多个val!" << endl; return 0; }
- equal_range:返回匹配特定键的元素范围 (公开成员函数)
- begin(size_type)、cbegin(size_type):返回一个迭代器,指向指定的桶的开始 (公开成员函数)
- end(size_type)、cend(size_type):返回一个迭代器,指向指定的桶的末尾 (公开成员函数)
3.equal_range了解
https://www.cnblogs.com/fnlingnzb-learner/p/6005169.html
equal_range是C++ STL中的一种二分查找的算法,试图在已排序的[first,last)中寻找value,它返回一对迭代器i和j,i是lower_bound,j是upper_bound,[i,j)内的每个元素都等同于value。
上面程序的输出为:
键值对序列: 3 -> 30 2 -> 200 2 -> 100 2 -> 10 1 -> 20 myUnorderedMultiMap.count(1) = 1 myUnorderedMultiMap.find(2) == myUnorderedMultiMap.end() ? 0 键 == 2 对应的值: 2 -> 200 2 -> 100 2 -> 10 unordered_multimap中一个key能对应多个val!