C++ 是否可以防止无序的_map::insert引发异常?

C++ 是否可以防止无序的_map::insert引发异常?,c++,visual-c++,std,unordered-set,C++,Visual C++,Std,Unordered Set,我想防止std::unordered_set::insert()引发异常。如果我保留了将插入无序集的最大元素数,std::unordered_set::reserve()是否可以达到这一目的?不幸的是reserve()只能用于控制何时重新刷新,因此迭代器将保持有效,至少直到插入保留的元素数为止。在保留范围内,insert仍然可以抛出bad_alloc(使用默认分配器) 对于nothrow保证,唯一的可能是事先知道可以插入哪些键,然后在异常可以轻松处理的位置插入所有键。不,不需要。另外,unord

我想防止std::unordered_set::insert()引发异常。如果我保留了将插入无序集的最大元素数,std::unordered_set::reserve()是否可以达到这一目的?

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


对于nothrow保证,唯一的可能是事先知道可以插入哪些键,然后在异常可以轻松处理的位置插入所有键。

不,不需要。另外,
unordered\u映射
unordered\u集
?以防止它抛出异常,而不是编写完美代码所需的异常。异常是由于重要原因(有些可能超出您的控制)而存在的,您需要处理它们。如果您试图将一个项目插入到集合中,但插入失败,您应该找出失败的原因。如果您真的想要防止异常,那么您需要测试您能想到的所有可能的场景,并在代码中优雅地处理它们。即便如此,您也只需要希望程序或用户系统中的其他地方不会出现任何问题。