描述
来源:牛客-不定项选择题
下列选项哪些是正确的
A. 对于 unordered_map 和 map 这两个容器,迭代器的有效性皆不受删除操作影响
B. 对于 unordered_map 和 map 这两个容器,迭代器的有效性皆不受插入操作影响
C. 为了保证代码的异常安全性,应该避免在构造函数中抛异常
D. 为了保证代码的异常安全性,应该避免在析构函数中抛异常
答案及解析
正确选项:D
解析
A. 当unordered_map 和 map 某迭代器it指向的元素被删除时,只有该迭代器it失效,其他的迭代器不会失效
B. map 插入时不会引起迭代器失效;unordered_map 插入时一般情况下不会引起迭代器失效,只有当容器增长到需要rehash时,原来的所有迭代器失效
C. 构造函数抛出异常后,已经构造的成员对象会被逆序析构,申请的内存资源会被系统释放,不会调用析构函数。而且构造函数抛出异常是唯一表明构造失败的方法
D. effective C++ “ 条款08:别让异常逃离析构函数 ” 指出来如果析构函数抛出异常,对于 vector