所以我用地图和对测试一些东西,我遇到了问题.
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)
我的问题是,我怎样才能将"彼得"改为丹尼尔?
你不能.你最好的选择是删除"彼得",然后添加"丹尼尔".
你不能改变的原因first的pair,这是key该项目的是,它预计从概念的角度来看一个常数.标准库通过定义std::map<K, V>::value_type来强制执行它std::pair<const K, V>.如果您能够更改其值first,则会破坏地图中项目的排序顺序.