所以我当时正在用地图和配对测试一些东西,但是遇到了问题。
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;
}
答案 0 :(得分:6)
我的问题是,我如何将“彼得”更改为丹尼尔?
您不能。最好的选择是删除“ Peter”,然后添加“ Daniel”。
您不能更改first
的{{1}}(即项目的pair
)的原因是,从概念的角度来看,它应该是一个常数。标准库通过将key
定义为std::map<K, V>::value_type
来强制实施。如果您能够更改std::pair<const K, V>
的值,则将破坏地图中各项的排序顺序。