Как изменить значение в мультикарте? - PullRequest
3 голосов
/ 02 апреля 2012

мой вопрос в том, что я сделал мультикарту. Вот частичный код.

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

            final[answer] =    

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

Здесь ответ - строка, а final - мультикарта <string,int>. Теперь я хочу, чтобы при наличии строкового ответа увеличивать (изменять) значение int. Как я могу это сделать? Я хочу увеличить значение int на единицу, если строковый элемент уже присутствует?

Привет.

Ответы [ 2 ]

3 голосов
/ 02 апреля 2012

Если вы хотите, чтобы ключи были уникальными, используйте map.Тогда вы можете просто сделать final[answer]++.Обратите внимание, что map::operator[] вставит ключ в карту, если он еще не существует.Значение будет построено по умолчанию во время этой вставки, и будет возвращена ссылка на это построенное значение по умолчанию.Если ключ уже существует, он возвращает ссылку на элемент значения.

0 голосов
/ 02 апреля 2012

используйте 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();
}
...