特定
std::map<int,std::string> myMap;
fillMyMapWithStuff(myMap);
// modify key values - I need to add a constant value to each key
for (std::map<int,std::string>::iterator mi=myMap.begin(); mi != myMap.end(); ++mi)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
什么是一个好方法应用一些重新索引?我必须删除旧条目并使用新密钥和旧值添加新条目吗?
是的,您必须删除旧条目并使用新密钥添加新条目.密钥不可修改.
如果您只修改一个或几个元素,则可以通过提示map::insert
新元素的位置来有效地执行此操作.由于您的新密钥肯定位于旧密钥之后的某个位置,因此您可以使用指向旧元素的迭代器进行提示.但是,您必须注意不要重新评估新插入的键(例如,通过迭代从头到尾),并且在修改整个映射的情况下,构建新映射更有效.