답변이 있으면 사과드립니다. 나는이 문제를 특별히 찾아서 해답을 찾을 수 없었다.포인터의 C++ unordered_set이 요소를 수정할 수 있습니다.
unordered_set에는 사용자 정의 형식에 대한 포인터가 들어 있으며 그 중 하나는 변수 개수입니다.
새로운 개체, 특히 개체에 대한 포인터를 삽입하려고하면 이미 존재하는지 확인합니다. 그럴 경우 해당 개체의 카운트를 증가시킵니다.
질문 : 질문 : C++은 unordered_set의 키인 객체를 어떻게 수정합니까?
auto iter = mySet.find(w);
if(iter == mySet.end()) {
mySet.insert(w);
}
else { /* found the element. Increment the count. */
(*iter) -> count += 1;
}
위의 코드는 잘 작동하고 예상대로 작동합니다. 첫 번째 이후에 객체를 삽입하려고 시도하면 이후 카운트가 증가합니다.
설명서에 따르면 unordered_set에 대한 반복자는 "const_ 앞에 선행하지 않아도"상수입니다. 누군가 내가 누락 된 것을 친절하게 설명 할 수 있습니까?
추가 정보 : 관련 해시 및 비교 펑터가 정의되어 있으며 템플릿 args로 unordered_set에 전달됩니다.
'iter'는 const 개체에 대한 포인터가 아닌 const 포인터 값입니다. –
'unordered_set'은 요소들, 즉 pointees가 아닌 포인터에 불변성을 적용합니다. pointee에 대한 변경 사항이 사용중인 해쉬 또는 비교 펑터의 결과에 영향을 미치지 않는지 확인하는 것은 귀하의 책임입니다. –
키와 관련 값을 원하기 때문에'set' 대신'map'을 사용해야합니다. –