Программы на C++. Форум разработчиков
-
Anonymous
Как заменить <ключ, значение> в стандартном мультикарте
Сообщение
Anonymous »
Перефразируя вопрос -
Вопрос перефразирован -
У меня есть требование заменить пару новым ключом и значением. Подумайте об этом -
Код: Выделить всё
#include
#include
#include
using namespace std;
int main()
{
std::multimap mymap;
mymap.insert(std::multimap::value_type(0, "A1"));
mymap.insert(std::multimap::value_type(0, "A2"));
mymap.insert(std::multimap::value_type(2, "C1"));
mymap.insert(std::multimap::value_type(2, "C2"));
mymap.insert(std::multimap::value_type(1, "B1"));
mymap.insert(std::multimap::value_type(1, "B2"));
mymap.insert(std::multimap::value_type(1, "B3"));
std::pair pr = mymap.equal_range(1);
std::multimap::iterator it;
for (it=pr.first; it!=pr.second; ++it)
{
unsigned int key = it->first;
key = key+10;
std::string val = it->second;
val = "X" + val;
mymap.erase(it);
mymap.insert(std::multimap::value_type(key, val));
}
for ( it=mymap.begin() ; it != mymap.end(); it++ )
{
cout C1
2 => C2
11 => XB1
11 => XB2
11 => XB3
Идея состоит в том, что я хочу заменить существующую запись на карте новой записью.
Что я делаю не так? Любая помощь очень ценится.
Подробнее здесь:
https://stackoverflow.com/questions/113 ... d-multimap
1770031083
Anonymous
Перефразируя вопрос -
Вопрос перефразирован -
У меня есть требование заменить пару новым ключом и значением. Подумайте об этом -
[code]#include
#include
#include
using namespace std;
int main()
{
std::multimap mymap;
mymap.insert(std::multimap::value_type(0, "A1"));
mymap.insert(std::multimap::value_type(0, "A2"));
mymap.insert(std::multimap::value_type(2, "C1"));
mymap.insert(std::multimap::value_type(2, "C2"));
mymap.insert(std::multimap::value_type(1, "B1"));
mymap.insert(std::multimap::value_type(1, "B2"));
mymap.insert(std::multimap::value_type(1, "B3"));
std::pair pr = mymap.equal_range(1);
std::multimap::iterator it;
for (it=pr.first; it!=pr.second; ++it)
{
unsigned int key = it->first;
key = key+10;
std::string val = it->second;
val = "X" + val;
mymap.erase(it);
mymap.insert(std::multimap::value_type(key, val));
}
for ( it=mymap.begin() ; it != mymap.end(); it++ )
{
cout C1
2 => C2
11 => XB1
11 => XB2
11 => XB3
[/code]
Идея состоит в том, что я хочу заменить существующую запись на карте новой записью.
Что я делаю не так? Любая помощь очень ценится.
Подробнее здесь: [url]https://stackoverflow.com/questions/11343822/how-to-replace-key-value-in-a-std-multimap[/url]