首页 > 解决方案 > 是否可以更改地图中的一对?

问题描述

所以我用地图和配对测试了一些东西,我遇到了一个问题。

    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;
}

标签: c++stdmap

解决方案


我的问题是,我怎样才能将“彼得”改为丹尼尔?

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

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


推荐阅读