STL容器类异常

来源:互联网 发布:kof98um出招优化 编辑:程序博客网 时间:2024/05/01 19:13

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也会抛出异常。




0 0
原创粉丝点击