C# · 12月 20, 2021

C++ unordered_map 用法

c++使用unordered_map

#include//在unordered_map之前加上tr1库名,

using namespace std::tr1;//与此同时需要加上命名空间

1

2

3

[查找元素是否存在]

若有unordered_map mp;查找x是否在map中

方法1: 若存在 mp.find(x)!=mp.end()

方法2: 若存在 mp.count(x)!=0

1

2

3

[插入数据]

mp.insert(Map::value_type(1,”Raoul”));

1

[遍历map]

unordered_map::iterator it;

(*it).first; //the key value

(*it).second //the mapped value

for(unordered_map::iterator iter=mp.begin();iter!=mp.end();iter++)

cout<<"key value is"<first<<" the mapped value is "<second;

//也可以这样

for(auto& v : mp)

print v.first and v.second

例程:

#include  

#include  

#include

#include  

using namespace std;  

int main()  

{  

    //注意:C++11才开始支持括号初始化

    unordered_map myMap={{ 5,”张大” },{ 6,”李五” }};//使用{}赋值

    myMap[2] = “李四”;  //使用[ ]进行单个插入,若已存在键值2,则赋值修改,若无则插入。

    myMap.insert(pair(3,”陈二”));//使用insert和pair插入

  

    //遍历输出+迭代器的使用

    auto iter = myMap.begin();//auto自动识别为迭代器类型unordered_map::iterator

    while (iter!= myMap.end())

    {  

        cout <first << "," <second << endl;  

        ++iter;  

    }  

    

    //查找元素并输出+迭代器的使用

    auto iterator = myMap.find(2);//find()返回一个指向2的迭代器

    if (iterator != myMap.end())

        cout << endl<first << "," <second << endl;  

    system(“pause”);  

    return 0;  

}