gpt4 book ai didi

c++ - 修改 boost unordered_map 中 key 的值

转载 作者:行者123 更新时间:2023-11-30 01:51:00 24 4
gpt4 key购买 nike

我有一个 boost::unordered_map,我想修改特定键的值。我看到了问题 here .

让我的问题与众不同的是,在我的 map 中,键是一个简单的 int,而我的值是 std::vector。我想通过在 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;
}

我想知道是否有更简洁的解决方案。

最佳答案

如果我正确理解你的问题, map 与你的插入没有任何关系。您只是在修改恰好 存储 在 map 中的 vector 。您不是在修改 map 的,而是其中一个

所以简短的解决方案是:

auto it = map.find(key);
if(it != map.end() && !it->second.empty() )
{
it->second.insert( (pntcrds.begin()+1), new_value);
}

如果您知道该键存在于您的 map 中,您可以将其缩短为:

std::vector<PointCords> & pntCords = map[key];
if( ! pntCords.empty() )
pntCords.insert( pntCords.begin()+1, new_value );

注意:如果您使用第二种方法并且 key 尚不存在,则默认构造 (=empty) std::vector<PointCords>将被插入到 map 中。

关于c++ - 修改 boost unordered_map 中 key 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26714956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com