我正在寻找C ++中的关联容器,而不是要求它的元素是默认构造的,会抛出一个异常,其中请求一个未找到的键 - 编辑:在相应的函数中,显然不是所有这些都需要默认构造。这基本上是因为我正在将一个标准分配器替换为一个主机,并告诉主对象分配了多少内存,因此需要知道“home”的位置。
答案 0 :(得分:2)
std :: map的最简单答案是不使用operator[]
。使用insert
创建新元素,使用find
找到现有元素。如果不使用operator[]
,则包含的类型不需要是默认可构造的,如果find
找不到对象,则可以决定抛出异常。
答案 1 :(得分:1)
您是否正在寻找boost::unordered_map
的{{3}}?这些不在std::tr1::unordered_map
,AFAICT。