0
#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 : '표준 : _ 트리> :: 삽입'5 오버로드 법적 없다 'this'포인터에 대한 변환.C2663 : '표준 : _ 트리> :: 삽입'5 오버로드 '이'포인터에 대한 법적 변환이 없습니다
은 삽입이 금지 된 컴파일러 const
으로 간주됩니다.
버그가 아닌 경우 어떻게 조작 할 수 있습니까?
'std :: set' 이터레이터는'const' 액세스 만 허용합니다. 다른 컨테이너를 제거/수정/재 삽입하거나 다른 컨테이너를 사용해야합니다. 만약 당신이 그것을 반복하면서'set'을 수정할 수 있다면, 그 순서에 영향을 미칠 수 있습니다. – Praetorian
집합에서 해당 항목을 제거하고 업데이트 된 값이있는 새 항목을 삽입해야합니다. 세트는 스스로 재구성해야합니다. 세트의 내부를 둘러 볼 수는 없습니다. – PaulMcKenzie