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

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

我想防止 std::unordered_set::insert() 抛出异常。如果我保留了我将插入到 unordered_set 中的最大元素数,std::unordered_set::reserve() 是否达到了这个目的?

最佳答案

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

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

关于c++ - 是否可以防止 unordered_map::insert 抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29043243/

相关文章:

c++ - -D MACRO 和#define MACRO 5 的优先级

c++ - 将模板参数与模板类型匹配

c++ - 在 BOOST 中使用通用图像库时是否应该安装 jpeg 库

c++ - 如何使用具有 pair<int,int> vector 元素的 unordered_set

c++ - std::deque - 下标超出范围

c++ - 为什么即将推出的范围库不支持范围内的容器初始化?

c++ - 从 vector<string> 中查找字符串的第一次出现

c++ - 如何跟踪光位的变化?

c++ - 如何编写会崩溃并生成转储文件的示例代码?

C++ 数学问题和 5/4*pi 与 5*pi/4