【发布时间】:2014-11-03 13:02:24
【问题描述】:
我有一个 boost::unordered_map 我想修改一个特定键的值。 我看到了here的问题。
让我的问题与众不同的是,在我的地图键中是一个简单的 int,而我的值是 std::vector。我想通过在向量的第二个位置插入一个新的 PoitCoord 来更新这个值。
一个解决方案是这样的:
auto it = map.find(key);
if(it != map.end())
{
std::vector<PointCoord> pntcrds = it->second;
pntcrds.insert((pntcrds.begin()+1), new_value);
it->second = pntcrds;
}
我想知道是否有不那么冗长的解决方案。
【问题讨论】:
-
it->second.insert( (pntcrds.begin()+1), new_value);?但是,您应该确保向量不为空。 -
请发布可编译的代码,您有错别字。而且您永远不会修改密钥。为什么要在第二个位置插入?
-
根据我使用的算法需要插入第二个位置。
-
@JohannesS。是否可以通过调用map本身直接插入?
-
好吧,地图与插入无关,IIUC。您只是在修改恰好存储在地图中的向量。您不是在修改地图的键,而是其中一个值。
标签: c++ boost unordered-map