#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
квалифицировано так, что вставка запрещена.
Если это не ошибка, как я могу манипулировать этим?
Если это не ошибка, как я могу манипулировать этим?
Вы не можете изменить значение, которое уже вставлено в std::set
на месте, поскольку данные упорядочены, и модификация аннулирует инвариант. Вам нужно либо удалить / изменить / повторно установить, либо использовать другой контейнер, чем std::set
Других решений пока нет …