2010-11-26 2 views
2

C++에서 연관 컨테이너를 찾고 있는데, 기본 구성 가능하도록 요소를 필요로하지 않고, 그렇지 않은 키가 요청 된 경우 예외가 발생합니다 발견 - 편집 : 해당 기능에서, 분명히 그들 모두가 기본 건설을 요구하지는 않습니다. 이것은 기본적으로 표준 할당자를 전화로 집으로 바꾸고 마스터 객체에게 할당되는 메모리의 양을 알려주기 때문에 "집"이 어디인지를 알아야하기 때문입니다.연관 컨테이너 - C++에서 default-construct가 아닌 예외

+0

(a) 기본 형식에서 구성하고, (b) 기본 형식으로 변환하고, (c) 인수가없는 생성자에서 예외를 throw하는 다른 형식으로 값 형식을 래핑 할 수 있습니까? 정말 그것을 통해 생각하지 않았습니다. –

+0

@ 스티브 : 저도 그 생각을했습니다. – Puppy

답변

2

std :: map에 대한 가장 간단한 대답은 operator[]을 사용하고 있지 않습니다. 새 요소를 만들려면 insert을 사용하고 기존 요소를 찾으려면 find을 사용하십시오. operator[]을 사용하지 않으면 포함 된 유형을 기본 구성 가능으로 만들 필요가 없으며 find이 객체를 찾지 못하면 예외를 발생시키고 예외를 결정할 수 있습니다.

1

at members : boost::unordered_map을 찾으십니까? 이들은 std::tr1::unordered_map, AFAICT에 없습니다.