Можно ли изменить ключ для данного значения в мультикарте? - PullRequest
0 голосов
/ 22 октября 2019

Я работаю над программой на C ++. У меня есть что-то вроде этого:

#include <map>
typedef multimap<int, int> MyMultimap;
MyMultimap CVP;
MyMultimap::iterator pos;
...
// extract data from external file and put them in CVP
CVP.insert(make_pair(1, 2));
CVP.insert(make_pair(1, 3));
CVP.insert(make_pair(3, 7));
CVP.insert(make_pair(3, 8));
CVP.insert(make_pair(4, 1));
CVP.insert(make_pair(5, 9));

Позже в программе я хотел бы удалить пару (3, 8) и добавить пару (1, 8). На самом деле мне нужно изменить ключ на значение 8, так как я не могу иметь дублированные значения. Поэтому мне нужно удалить пару (3, 8). Есть ли простой способ для этого? Я пробовал что-то подобное, но это, конечно, не работает:

carNb = 8;
for (pos = CVP.begin(); pos != CVP.end(); ++pos) {
    if (pos == CVP.find(carNb)) {
        MyMultimap::iterator it = CVP.find(carNb);
        CVP.erase(it);
    }
}

Большое спасибо за вашу помощь

...