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 "<< iter->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 << iter->first << "," << iter->second << endl;  
        ++iter;  
    }  
    
    //查找元素并输出+迭代器的使用
    auto iterator = myMap.find(2);//find()返回一个指向2的迭代器
    if (iterator != myMap.end())
        cout << endl<< iterator->first << "," << iterator->second << endl;  
    system("pause");  
    return 0;  
}  
 

你可能感兴趣的:(C++)