【问题标题】:Insert elements into c++ map - differences of insert methods将元素插入c++ map - 插入方法的区别
【发布时间】:2012-12-01 14:47:10
【问题描述】:

这两个版本的插入 c++ map 有什么区别:

map<string,double> myMap;
// version 1
myMap["david"] = 123.123;

// version 2
myMap.insert(std::make_pair("david" ,123.123));

问候

【问题讨论】:

  • this 可能会有所帮助。

标签: c++ map


【解决方案1】:

如果键已经存在,第一个将更新值,但如果键已经存在,第二个将更新它。

std::map<string,double> myMap;

//working with operator[]
myMap["david"] = 123.0; //inserts
myMap["david"] = 98.0;   //updates

std::cout << myMap["david"] << std::endl; //prints 98.0 (updated value)

//working with insert
myMap.insert(std::make_pair("nawaz", 100.0)); //inserts
myMap.insert(std::make_pair("nawaz", 878.0)); //no update

std::cout << myMap["nawaz"] << std::endl; //prints 100.0 (old value)

insert 函数返回 std::pair&lt;iterator,bool&gt;。该对的布尔值告诉您插入是否成功。

现在阅读文档了解更多详情:

【讨论】:

  • 此外,如果myMap["david"] 处的值不存在,则默认构造然后覆盖(这就是为什么您不能将operator[]const 的映射一起使用) .这不如insert 最佳。同样,insert 在这种情况下可能不如emplace 最佳。
猜你喜欢
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多