如何修改unordered_map中的值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修改unordered_map中的值?相关的知识,希望对你有一定的参考价值。
我想尝试使用键k和值v将元素插入到映射中。如果键已经存在,我想增加该键的值。
例,
typedef std::unordered_map<std::string,int> MYMAP;
MYMAP mymap;
std::pair<MYMAP::iterator, bool> pa=
mymap.insert(MYMAP::value_type("a", 1));
if (!pa.second)
{
pa.first->second++;
}
这不起作用。我怎样才能做到这一点?
答案
您不需要迭代器来实现此目标。因为你的v
是V() + 1
,所以你可以简单地增加,而不需要知道密钥是否已经存在于地图中。
mymap["a"]++;
在您给出的示例中,这样做会很好。
另一答案
unordered_map:
一些漂亮的代码(变量名简化): 从这里http://en.cppreference.com/w/cpp/container/unordered_map/operator_at
std::unordered_map<char, int> mu1 {{'a', 27}, {'b', 3}, {'c', 1}};
mu1['b'] = 42; // update an existing value
mu1['x'] = 9; // insert a new value
for (const auto &pair: mu1) {
std::cout << pair.first << ": " << pair.second << '
';
}
// count the number of occurrences of each word
std::unordered_map<std::string, int> mu2;
for (const auto &w : { "this", "sentence", "is", "not", "a", "sentence", "this", "sentence", "is", "a", "hoax"}) {
++mu2[w]; // the first call to operator[] initialized the counter with zero
}
for (const auto &pair: mu2) {
std::cout << pair.second << " occurrences of word '" << pair.first << "'
";
}
以上是关于如何修改unordered_map中的值?的主要内容,如果未能解决你的问题,请参考以下文章