c++ - 是否可以更改地图中的一对?
问题描述
所以我用地图和配对测试了一些东西,我遇到了一个问题。
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;
}
解决方案
我的问题是,我怎样才能将“彼得”改为丹尼尔?
你不能。您最好的选择是删除“Peter”,然后添加“Daniel”。
您不能更改 的 (即项目的 )的原因first
是pair
,key
从概念的角度来看,它应该是一个常数。标准库通过定义std::map<K, V>::value_type
为来强制执行它std::pair<const K, V>
。如果您能够更改 的值first
,您将破坏地图中项目的排序顺序。
推荐阅读
- gradle - 带有文件分隔符的依赖项在 gradle 6.0 版本中无法解析
- django - django runserver:关系“django_migrations”已经存在
- powershell - PowerShell - 解压缩大型档案 - 运行空间工厂
- python - 带优先队列的线程
- reference - 在 Latex 中用逗号替换引用中的括号
- angularjs - 安装 angularx-social-login 后出现弃用错误
- node.js - 我如何通过节点 js 在模型中使用函数查找值来获取
- ethereum - 我们可以在不同的区块链上部署相同的 ERC20 代币吗?
- c# - 无法解析符号
- php - PHPUnit Laravel 没有运行下一个测试用例