vector
如果vector调用的函数抛出异常,C++标准程序库做出如下假设。
1.如果push_back()安插元素时发生异常,该函数不起作用。
2.如果拷贝操作不抛出异常,那么insert要么不生效,要么成功。
3.pop_back绝不抛出异常。
4.如果拷贝操作不抛出异常,erase,clear不抛出异常。
5.swap不抛出异常。
所有这些保证都基于一个条件:析构函数不得抛出异常。
deque
与vector类似
push_front和pop_front等同于vector的push_back和pop_back。
list
push_back,push_front,insert,resize:不成功,就是无任何作用
pop_back,pop_front,erase,clear,splice,reverse,swap:不抛出异常
remove,unique:只要元素比较操作不抛出异常,它就不抛出异常
remove_if:只要判断式不抛出异常,它就不抛出异常
merge:只要元素比较操作不抛出异常,它便保证要么不成功,要么无任何作用
set
面对多重元素插入异常抛出时无法完全复原。单一元素安插操作保证成功否则无效。
多元素删除总是能成功。
复制操作抛出异常,swap也会抛出异常。