如何修改multimap中的值?

时间:2012-04-02 17:55:34

标签: c++ multimap

我的问题是我制作了multimap.Here是部分代码。

        if(binary_search(final.begin() , final.end() , answer ) )
            {

            final[answer] =    

            }
            else
            {
                final.insert(pair<string,int>(answer , 1 ) );
            }

这里的答案是一个字符串,final是<string,int>的多图。现在我想要的是,如果存在字符串答案,则增加(修改)int的值。我怎样才能做到这一点? 如果字符串元素已经存在,我想将int的值增加1?

问候。

2 个答案:

答案 0 :(得分:3)

如果您希望密钥唯一,请使用map。然后你可以做final[answer]++。请注意,如果密钥已经存在,map::operator[]会将密钥插入到地图中。该值将在此插入期间默认构造,并返回对此默认构造值的引用。如果密钥已经存在,那么它将返回对value元素的引用。

答案 1 :(得分:0)

如果密钥是唯一的,请使用std::map

如果您需要多地图(即需要使用相同的密钥的多个条目),请使用?std::lower_bound

multimap::iterator it = mmap.lower_bound(key);
while (it != mmap.end() && it->first == key)
{
   // *it is a key-value pair, where you can modify the value
   it->second.Modify();
}