STL 맵에 주어진 키의 값이 포함되어 있는지 확인하는 가장 좋은 방법은 무엇입니까?
#include <map>
using namespace std;
struct Bar
{
int i;
};
int main()
{
map<int, Bar> m;
Bar b = {0};
Bar b1 = {1};
m[0] = b;
m[1] = b1;
//Bar b2 = m[2];
map<int, Bar>::iterator iter = m.find(2);
Bar b3 = iter->second;
}
이것을 디버거에서 검사하면 iter
가비지 데이터 처럼 보입니다 .
이 줄을 주석 해제하면 :
Bar b2 = m[2]
디버거는이 표시 b2
됩니다 {i = 0}
. (정의되지 않은 인덱스를 사용하면 모든 비어 있거나 초기화되지 않은 값을 가진 구조체가 반환된다는 것을 의미한다고 생각합니다.)
이 방법들 중 어느 것도 그렇게 훌륭하지 않습니다. 내가 정말로 원하는 것은 다음과 같은 인터페이스입니다.
bool getValue(int key, Bar& out)
{
if (map contains value for key)
{
out = map[key];
return true;
}
return false;
}
이 선들을 따라 뭔가 존재 하는가?