是否可以更改地图中的一对?

时间:2018-07-02 20:18:38

标签: c++ stdmap

所以我当时正在用地图和配对测试一些东西,但是遇到了问题。

    std::map<std::string, int> pairTest;

pairTest.insert(std::make_pair("Peter", 100));

for (std::map<std::string, int>::iterator it = pairTest.begin(); it != pairTest.end(); it++) {
    std::cout << it->first << ":" << it->second << std::endl;
}

如何将“彼得”更改为丹尼尔? 我应该能够做到吗?

我怎样才能使配对永远不变,并添加具有不同值的相同密钥?

我尝试了另一种方法,这是更正确的方法吗?

    std::map<std::string, int> pairTest;

pairTest.insert(std::pair<std::string, int>("Peter", 100));

for (std::map<std::string, int>::iterator it = pairTest.begin(); it != pairTest.end(); it++) {
    std::cout << it->first << ":" << it->second << std::endl;
}

1 个答案:

答案 0 :(得分:6)

  

我的问题是,我如何将“彼得”更改为丹尼尔?

您不能。最好的选择是删除“ Peter”,然后添加“ Daniel”。

您不能更改first的{​​{1}}(即项目的pair)的原因是,从概念的角度来看,它应该是一个常数。标准库通过将key定义为std::map<K, V>::value_type来强制实施。如果您能够更改std::pair<const K, V>的值,则将破坏地图中各项的排序顺序。