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