아마도 무언가를 매우 어리석은 짓을하고 있지만, find
이 suppID
과 같은 키를 가진 요소를 찾지 못한 이유를 알 수 없습니다.C++ std :: map :: iterator는 아무것도 찾지 못했지만, 아래 첨자 연산자는 매핑 된 값에 대한 참조를 반환합니까?
그러나 아래 첨자 연산자 suppID
을 전달하면 매핑 된 값에 대한 참조가 반환됩니다 (올바르게 찾았습니까?). std::map
가 첨자 연산자를 사용할 때 아직 존재하지 않는 새로운 키 값에 대한 기본 값을 삽입하기 때문에
typedef std::map<SuppID, Supplement *> Supplement_t;
Supplement_t::iterator it = supplements.find(suppID); //it = supplements.end()
cout << "Supplement name: " << supplements[suppID]->getName() << endl; // "Cytogainer"
... // Returns few of many other data members I tested...
'SuppID'는 복잡한 타입이고, 당신 자신의'<'를 작성했습니다. – Yakk
@Yakk Correct. 그 팁은 나를 더 많이 읽게하고 모든 요소가 반사적으로 거짓으로 되돌아 갈 필요가 있음을 발견했습니다. 현재 그들은 그렇지 않습니다. 그래서 저는 그것이 실제로 문제라고 믿습니다. –