zoukankan      html  css  js  c++  java
  • 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++标准程序库》
    
    
  • 相关阅读:
    每日一题
    每日一题
    每日一题
    每日一题
    GitLab 部署
    Golang Web开发之Gin入门
    Golang消息队列之NSQ
    Golang操作Redis
    Golang操作MySQL
    Golang Json数据处理方法
  • 原文地址:https://www.cnblogs.com/ggzone/p/4052435.html
Copyright © 2011-2022 走看看