我有一个std::unordered_map
,并且我想要增加 a 中的第一个值,std::pair
由 散列key
,并创建对 的引用key
。例如:
std::unordered_map<int, std::pair<int, int> > hash;
hash[key].first++;
auto it(hash.find(key));
int& my_ref(it->first);
我可以不使用[]
运算符,而是使用 插入数据insert()
,但我会分配一对,即使它稍后会被释放,因为hash
可能已经有key
- 但不确定。使其更清晰:
// If "key" is already inserted, the pair(s) will be allocated
// and then deallocated, right?
auto it(hash.insert(std::make_pair(key, std::make_pair(0, 0))));
it->second.first++;
// Here I can have my reference, with extra memory operations,
// but without an extra search in `hash`
int& my_ref(it->first);
我非常倾向于使用第一个选项,但我似乎无法决定哪个是最好的。有什么更好的解决方案吗?
PS:对我来说,一个理想的解决方案是像插入一样不需要初始的,可能是无用的,分配价值。