#cpp
Как поменять значение индекса в map. С обычным значением понятно, обращаться через индекс. mapfactor; /*Имеем в нем значения 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. Где проблема?
Ответы
Ответ 1
Создать новые - убрать старые. Удаление элемента std::map по ключу (по "индексу") делает метод erase mapfactor; // Добавляем factor[2]=4; factor[6]=7; // Удаляем factor.erase(2); factor.erase(6); Ответ 2
Поменять значение понятно, как: factor[it->first]=0; А it->second = 0; - недостаточно кошерно? :) Вы, похоже, как-то неверно представляете себе работу map... Просто вносите что вам нужно - как вы писали: factor[45]=99; factor[32]=56; Ну, а ненужное удалить - для того erase есть.
Комментариев нет:
Отправить комментарий