C2663: ‘std :: _ Tree & gt; :: insert’: 5 ​​перегрузок не имеют легального преобразования для указателя ‘this’

#include <map>
#include <set>
using namespace std;
map <string, set<pair<int, set<int>>>> dictonary;

int s()
{
for (auto & i : dictonary["abc"])
{
i.second.insert(2);  //error C2663
}
}

C2663: ‘std :: _ Tree> :: insert’: 5 ​​перегрузок не имеют законного преобразования для указателя ‘this’.

i.second считается компилятором const квалифицировано так, что вставка запрещена.

Если это не ошибка, как я могу манипулировать этим?

0

Решение

Если это не ошибка, как я могу манипулировать этим?

Вы не можете изменить значение, которое уже вставлено в std::set на месте, поскольку данные упорядочены, и модификация аннулирует инвариант. Вам нужно либо удалить / изменить / повторно установить, либо использовать другой контейнер, чем std::set

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]