Страницы

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

среда, 1 января 2020 г.

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

#cpp


Как поменять значение индекса в 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. Где проблема?
    


Ответы

Ответ 1



Создать новые - убрать старые. Удаление элемента std::map по ключу (по "индексу") делает метод erase map factor; // Добавляем 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 есть.

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

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