• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2022-12-06 19:31 Aet 隐藏边栏 |   抢沙发  7 
文章评分 1 次,平均分 5.0

简述

array<T,N>

  1. 长度固定,N个T类型的对象
  2. 不能增加或删除元素

vector<T>

  1. 底层实现是封装了顺序表,是一块物理上连续的空间
  2. 长度可变,必要时可以自动增加容量
  3. 但只能在序列的末尾高效的增加或删除元素

deque<T>

  1. deque是由一段一段的定量连续空间构成的,一旦有必要在前端和尾端添加新空间,便配置一段定量连续空间,串联在真个deque的前端或尾端
    1. 它采用一块所谓的map(不是stl的map)作为主控。这个map是一小块连续空间,每个元素都是指针,指向另一端线性连续空间(缓冲区)
    2. STL允许我们指定缓冲区的大小,默认值0表示使用512字节的缓冲区
  2. 双端队列,长度可变,可以自动增长的序列
  3. 在序列的两端都不能高效的增加或删除元素

list<T>

  1. 底层实现是双向链表,节点之间通过指针展现出逻辑上的连续,在物理内存的分配上,不是连续的。
  2. 双向链表,长度可变
  3. 在任何地方都能高效的增加或删除元素
  4. 访问容器中的元素的速度要比前面3种都要慢,因为它只能从第一个或最后一个元素开始遍历

forward_list<T>

  1. 正向单链表,长度可变
  2. 比list更快,更节省内存的容器
  3. 只能从第一个元素开始访问遍历

array

fill

  1. 将所有元素设置成传入的参数

at

  1. 可以通过下标对array进行访问,但是使用at更安全,at对越界索引值进行了检测

size

  1. 返回元素个数

empty

  1. 空的话返回true

front

  1. 返回第一个元素的引用

back

  1. 返回最后一个元素的引用

data

  1. 返回&front(),是容器底层用来存储元素的标准数组的地址,一般不会用到

get<n>

  1. 模板函数,获取到容器的第n个元素,参数n必须是一个能在编译器确定的常量表达式

vector

reserve

  1. 增加容器容量

size

  1. 元素数量

at

  1. 可以通过下标对vector进行访问,但是使用at更安全,at对越界索引值进行了检测

capacity

  1. 容器大小

front

  1. 返回第一个元素的引用

back

  1. 返回最后一个元素的引用

data

  1. 返回一个指向数组的指针,它在内部被用来存储元素

push_back

  1. 在末尾添加一个元素(生成一个对象,移动到vector中)

emplace_back

  1. 更高效的在末尾添加一个元素(根据传入的参数,用目标类型的构造函数生成一个对象)

insert

  1. 插入元素

emplace

  1. 在vector中插入新的元素(直接在容器中生成)

clear

  1. 删除所有元素

pop_back

  1. 删除尾部元素

shrink_to_fit

  1. 去掉容器的多余容量

erase

  1. 删除容器中的一个或多个元素

vector<bool>

  1. vector<T>的特化,为bool类型的元素提供了更加有效的内存使用方式
  2. bool值的序列通常不需要存储在连续的内存中,因此vector<bool>中没有data函数
  3. 直接寻址时,它们被包装成了一个字,所以front和back返回的不是bool&引用,而是一个中间对象的引用,他代表序列中第一个值和最后一个值
  4. 当要使用bool,并且知道要用多少个时,bitset是更好的选择

deque

size

  1. 元素数量

at

  1. 可以通过下标对deque进行访问,但是使用at更安全,at对越界索引值进行了检测

front

back

push_back

pop_back

push_front

pop_front

insert

emplace_front

emplace_back

assign

  1. 替换现有的所有元素

list

  1. 不能索引元素,需要一个一个遍历

push_front

  1. 在头部添加一个元素

push_back

  1. 在尾部添加一个元素

emplace_back

  1. 在尾部添加一个元素

insert

clear

erase

remove

  1. 移除和参数匹配的元素

remove_if

  1. 传入一个一元断言,断言返回true的所有元素都会被移除

unique

  1. 移除连续的重复元素,只留下其中的第一个

merge

  1. 以另一个相同元素类型的list容器作为参数,连个容器中的元素都必须是升序。参数list容器中的元素最后会被合并到当前list里面

splice

  1. 将参数list容器中的元素移动到当前容器中指定位置的前面
    1. 可以移动单个,一段,或全部

front

back

forward_list

  1. 和list的区别是,不能反向遍历元素,只能从头到尾遍历
  2. 无法使用反向迭代器,只能得到const或非const的前向迭代器,这些迭代器都不能解引用,只能自增

front

  1. 返回第一个元素的的引用
  2. list没有back,push_back,pop_back,emplace_back

size

  1. 没有size
  2. 只能通过distance来得到元素的个数
  3. 也可以使用advance来将前向迭代器自增需要的次数

splice_after

insert_after

  1. 元素插入

sort

merge

remove

remove_if

unique

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享