我想阻止std :: unordered_set :: insert()抛出异常。如果我保留了我将插入到unordered_set中的最大元素数,std :: unordered_set :: reserve()是否可以用于此目的?
答案 0 :(得分:0)
不幸的是,reserve()只能用于控制何时进行重新散列,因此迭代器将至少保持有效,直到插入了保留的元素数。在保留范围内,插入仍然可以抛出bad_alloc(使用默认分配器)。
对于nothrow保证,唯一的可能性是事先知道可以插入哪些键,然后将它们全部插入可以轻松处理异常的位置。