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


    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++标准程序库》
    
    
  • 相关阅读:
    四大组件之内容提供者
    【风马一族_代码英语】英语学习
    利用Maven快速创建一个简单的spring boot 实例
    Maven项目下面没有src/main/java这个包
    Maven中,pom.xml文件报错
    Maven一:maven的下载和环境安装以及创建简单的Maven项目
    SpringMVC
    自动装箱、拆箱
    序列化:Serializable
    java反射机制出浅读
  • 原文地址:https://www.cnblogs.com/ggzone/p/10121352.html
Copyright © 2020-2023  润新知