Страницы

Поиск по вопросам

среда, 9 января 2019 г.

Изменение значение индекса в map

Как поменять значение индекса в map. С обычным значением понятно, обращаться через индекс.
map factor; /*Имеем в нем значения factor[2]=4; factor[6]=7*/ auto it=factor.begin();
Поменять значение понятно, как:
factor[it->first]=0;
А как поменять индекс, т.е. надо, чтобы было:
factor[45]=99; factor[32]=56
Понимаю, что легче просто новые создать, но останутся старые элементы map. Как их убрать, тогда?
Имею такой map: [2]=2 [3]=2
Пытаюсь так сделать:
ps[pow(it->first, it->second)] = ui; if(pow(it->first, it->second) !=it->second) ps.erase(it->first); it++;
При первом проходе у нас заносится запись [4]=2 и удаляется [2]=2.И почему-то итератор становится it=end. Где проблема?


Ответ

Создать новые - убрать старые. Удаление элемента std::map по ключу (по "индексу") делает метод erase
map factor;
// Добавляем factor[2]=4; factor[6]=7;
// Удаляем factor.erase(2); factor.erase(6);

Комментариев нет:

Отправить комментарий