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

229
04 января 2018, 23:36

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

Answer 1

Создать новые - убрать старые. Удаление элемента std::map по ключу (по "индексу") делает метод erase

map<int, int> factor;
// Добавляем
factor[2]=4;
factor[6]=7;
// Удаляем
factor.erase(2);
factor.erase(6);
Answer 2

Поменять значение понятно, как: factor[it->first]=0;

А it->second = 0; - недостаточно кошерно? :)

Вы, похоже, как-то неверно представляете себе работу map...

Просто вносите что вам нужно - как вы писали:

factor[45]=99;
factor[32]=56;

Ну, а ненужное удалить - для того erase есть.

READ ALSO
Отображение MapPolyline на карте QML. C++/Qt

Отображение MapPolyline на карте QML. C++/Qt

По заданию необходимо отобразить карту на экране и рисовать на ней линииПробую сделать вот так:

186
Функция шаблон в классе

Функция шаблон в классе

Есть класс автобусЕсть после destination (маршрут который проходит) petrol (количество бензина потраченного)

167
Как загрузить xml из ресурсов для Jsoup

Как загрузить xml из ресурсов для Jsoup

Как это можно сделать? Метод parse() принимает String

207
Exception in thread &ldquo;main&rdquo; java.lang.StackOverflowError [требует правки]

Exception in thread “main” java.lang.StackOverflowError [требует правки]

Почему происходит переполнение стека, если осуществлять цикл посредством for(), хотя с циклом do-while компиляция выполняется корректно?

158