您的位置:首页 > 其它

STL容器能力一览表和各个容器操作函数异常保证

2014-07-19 16:33 447 查看
STL容器能力一览表

Vector
Deque
List
Set
Multiset
map
Multimap
典型内部

结构
dynamic

array
Array of arrays
Doubly

Linked list
Binary tree
Binary tree
Binary tree
Binary tree
元素
Value
Value
Value
Value
Value
Key/value

pair
Key/value

pair
元素

可重复





对key而言否

可随机

存取





对key而言是

迭代器

类型
随机存取
随机存取
双向
双向元素被视为常数
双向元素被视为常数
双向key被视为常数
双向key被视为常数
元素搜寻

速度


非常慢


对key而言快
对key而言快
快速

安插移除
尾端
头尾两端
任何位置
---
---
---
---
安插移除

导致无效iterators,pointers,

references
重新分配时
总是如此
绝不会
绝不会
绝不会
绝不会
绝不会
释放被移

除元素之

内存
绝不会
有时会
总是如此
总是如此
总是如此
总是如此
总是如此
允许

保留内存


---
---
---
---
---
交易安全

若失败带

来任何影响
尾端push/pop时
头尾两端push/pop时
任何时候除了排序和赋值
任何时候除了多元素安插
任何时候除了多元素安插
任何时候除了多元素安插
任何时候除了多元素安插
各个容器操作函数异常保证

操作
页码
保证
Vector::push_back()
241
要么成功,要么无任何影响
Vector::insert()
240
要么成功,要么无任何影响------前提是元素的复制/赋值操作不抛出异常
Vector::pop_back()
243
不抛出异常
Vector::erase()
242
不抛出异常------前提是元素的复制/赋值操作不抛出异常
Vector::clear()
244
不抛出异常------前提是元素的复制/赋值操作不抛出异常
Vector::swap()
237
不抛出异常
Deque::push_back()
241
要么成功,要么无任何影响
Deque::push_front()
241
要么成功,要么无任何影响
Deque::insert()
240
要么成功,要么无任何影响------前提是元素的复制/赋值操作不抛出异常
Deque::pop_back()
243
不抛出异常
Deque::pop_front()
243
不抛出异常
Deque::erase()
242
不抛出异常------前提是元素的复制/赋值操作不抛出异常
Deque::clear()
244
不抛出异常------前提是元素的复制/赋值操作不抛出异常
Deque::swap()
237
不抛出异常
List::push_back()
241
要么成功,要么无任何影响
List::push_front()
241
要么成功,要么无任何影响
List::insert()
240
要么成功,要么无任何影响
List::pop_back()
243
不抛出异常
List::pop_front()
243
不抛出异常
List::erase()
242
不抛出异常
List::clear()
244
不抛出异常
List::remove()
242
不抛出异常-------前提是元素的比较操作不抛出异常
List::remove_if()
242
不抛出异常-------前提是判断是predicate不抛出异常
List::unique()
244
不抛出异常-------前提是元素的比较操作不抛出异常
List::splice()
245
不抛出异常
List::merge()
246
要么成功,要么无任何影响-------前提是元素的比较操作不抛出异常
List::reverse()
246
不抛出异常
List::swap()
237
不抛出异常
[multi]set::insert()
240
要么成功,要么无任何影响-------对单个元素而言
[multi]set::erase()
242
不抛出异常
[multi]set::clear()
244
不抛出异常
[multi]set::swap()
237
不抛出异常-------前提是对“比较准则”执行复制/赋值操作时不抛出异常
[multi]map::insert()
240
要么成功,要么无任何影响-------对单个元素而言
[multi]map::erase()
242
不抛出异常
[multi]map::clear()
244
不抛出异常
[multi]map::swap()
237
不抛出异常-------前提是对“比较准则”执行复制/赋值操作时不抛出异常
*《C++标准程序库》


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: