是否可以防止unordered_map :: insert抛出异常?

时间:2015-03-13 22:50:54

标签: c++ visual-c++ std unordered-set

我想阻止std :: unordered_set :: insert()抛出异常。如果我保留了我将插入到unordered_set中的最大元素数,std :: unordered_set :: reserve()是否可以用于此目的?

1 个答案:

答案 0 :(得分:0)

不幸的是,reserve()只能用于控制何时进行重新散列,因此迭代器将至少保持有效,直到插入了保留的元素数。在保留范围内,插入仍然可以抛出bad_alloc(使用默认分配器)。

对于nothrow保证,唯一的可能性是事先知道可以插入哪些键,然后将它们全部插入可以轻松处理异常的位置。