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!

 

posted @ 2022-09-27 10:40  lypbendlf  阅读(342)  评论(0编辑  收藏  举报