C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++ map区别unordered map

C++ 容器中map和unordered map区别详解

作者:极智视界

这篇文章主要为大家介绍了C++ 容器中map和unordered map区别示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

C++ 中 map 和 unordered_map区别

map 和 unordered_map 都可以看做是一种 key-value 的映射关系,unordered_map 可以理解为 无序版的map。unordered_map 是在 C++11 标准才出现的,所以你在代码中如果使用了 unordered_map,则在编译的时候要使用 c++11及以后的标准 进行编译。

这里直击要点:

   来把区别用表格展示:

   map 和 unordered_map 在代码使用上十分类似,来看看两者的用法:

int main(){
  //// map 用法
  map<int, string> _ismap;
  // 增的三种方法
  _ismap.insert(make_pair(0, "kobe"));
  _ismap[1] = "james";
  _ismap.insert(map<int, string>::value_type(2, "curry"));
  // 遍历
  for (auto &iter : _ismap){
    cout << iter.first << " : " << iter.second << endl;
    /*
    * 输出如下 按key递增排序
    * 0 : kobe
    * 1 : james
    * 2 : curry
    */
  }
  // 删除
  map<int, string> ::iterator _mapIter = _ismap.find(0);
  _ismap.erase(_mapIter);    // 删除指定的key
  // _ismap.erase(0);  // 删除key=0的键值对
  // _ismap.erase(std::begin(_ismap));   // 删除第一个键值对
  //// unordered_map 用法
  unordered_map<int, string> _isunorderedMap;
  // 增的三种方法
  _isunorderedMap.insert(make_pair(0, "yaoming"));
  _isunorderedMap[1] = "yi";
  _isunorderedMap.insert(unordered_map<int, string>::value_type(2, "zhouqi"));
  // 遍历
  for (auto iter = unorderedMap.begin(); iter != unorderedMap.end(); iter++){
    cout << iter->first << " : " << iter->second << endl;
    /*
    * 输出如下 乱序
    * 2 : zhouqi
    * 0 : yaoming
    * 1 : yi
    */
    // 删除
    auto _unorderedIter = _isunorderedMap.find(0);
    _isunorderedMap.erase(_unorderedIter);     // 删除指定的key
    // _unorderedIter.erase(0);    // 删除key=0的键值对
    // _unorderedIter(_unorderedIter.begin());    // 删除第一个键值对
  }
}

以上就是C++ 容器中map和unordered map区别详解的详细内容,更多关于C++ map区别unordered map的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文