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

All*_*son -1 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;
}
Run Code Online (Sandbox Code Playgroud)

我怎么能把"彼得"变成丹尼尔?我本该能够做到吗?

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

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

    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;
}
Run Code Online (Sandbox Code Playgroud)

R S*_*ahu 6

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

你不能.你最好的选择是删除"彼得",然后添加"丹尼尔".

你不能改变的原因firstpair,这是key该项目的是,它预计从概念的角度来看一个常数.标准库通过定义std::map<K, V>::value_type来强制执行它std::pair<const K, V>.如果您能够更改其值first,则会破坏地图中项目的排序顺序.