一起来读书202- c++标准模板库编程实战:第二章 使用序列容器

摘要

序列容器一些操作

详情

序列容器

  • array<T, N>(数组容器):一个长度固定的序列
  • vector<T>(向量容器):一个长度可变的序列
  • deque<T>(双向队列容器):一个长度可变的,可以自动增长的序列
  • list<T>(链表容器):一个长度可变的,由T类型对象组成的序列
  • forward_list<T>(正向链表容器):一个长度可变的,由T类型对象组成的序列

array, vector, deque容器的函数成员

函数成员 说明 array<T, N> vector<T> deque<T>
begin() 返回开始迭代器 Y Y Y
end() 返回结束迭代器 Y Y Y
rbegin() 返回反向开始迭代器 Y Y Y
rend() 返回方向结束迭代器 Y Y Y
cbegin() 返回const开始迭代器 Y Y Y
cend() 返回const结束迭代器 Y Y Y
crbegin() 返回const反向开始迭代器 Y Y Y
crend() 返回const反向结束迭代器 Y Y Y
assign() 用新元素替换原有内容 - Y Y
operator=() 复制同类型容器的元素,或者用初始化列表替换现有内容 Y Y Y
size() 返回实际元素个数 Y Y Y
max_size() 返回元素个数的最大值 Y Y Y
capacity() 返回当前容量 - Y -
empty() 返回true,如果容器中没有元素的话 Y Y Y
resize() 改变实际元素个数的最大值 - Y Y
shrink_to_fit() 将内存减少到等于当前元素实际所使用的大小 - Y Y
front() 返回打一个元素的引用 Y Y Y
back() 返回最后一个元素的引用 Y Y Y
operator[]() 使用索引访问元素 Y Y Y
at() 使用进过边界检查的索引访问元素 Y Y Y
push_back() 在序列的尾部添加一个元素 - Y Y
insert() 在指定的位置插入一个或多个元素 - Y Y
emplace() 在指定的位置直接生成一个元素 - Y Y
emplace_back() 在序列尾部生成一个元素 - Y Y
pop_back() 移出序列尾部的元素 - Y Y
erase() 移出一个元素或一段元素 - Y Y
clear() 移出所有的元素,容器大小变为0 - Y Y
swap() 交换两个容器的所有元素 Y Y Y
data() 返回包含元素的内部数组的指针 Y Y -

list, forward_list容器的函数成员

函数成员 说明 list<T> forward_list<T>
begin() 返回开始迭代器 Y Y
end() 返回结束迭代器 Y Y
rbegin() 返回反向开始迭代器 Y -
rend() 返回反向结束迭代器 Y -
cbegin() 返回const开始结束迭代器 Y Y
before_begin() 返回一个指向第一个元素前一个位置的迭代器 - Y
cbefore_begin() 返回一个指向第一个元素前一个位置的const迭代器 - Y
cend() 返回const结束迭代器 Y Y
crbegin() 返回const反向开始迭代器 Y -
crend() 返回const反向结束迭代器 Y -
assign() 用新元素替换原有内容 Y Y
operator=() 复制同类型容器的内容,或者用初始化列表替换现有内容 Y Y
size() 返回实际元素个数 Y -
max_size() 返回元素个数的最大数 Y Y
resize() 改变实际元素的个数 Y Y
empty() 返回true,如果容器中没有元素的话 Y Y
front() 返回第一个元素的引用 Y Y
back() 返回最后一个元素的引用 Y -
push_back() 在序列的尾部添加一个元素 Y -
push_front() 在序列的起始位置添加一个元素 Y Y
emplace() 在指定位置直接生成一个元素 Y -
emplace_after() 在指定位置的后面直接生成一个元素 - Y
emplace_back() 在序列尾部生成一个元素 Y -
emplace_front() 在序列的起始位置生成一个元素 Y Y
insert() 在指定的位置插入一个或多个元素 Y -
insert_after() 在指定位置的后面插入一条或多个元素 - Y
pop_back() 移出序列尾部的元素 Y -
pop_front() 移出序列头部的元素 Y Y
reverse() 反向元素的顺序 Y Y
erase() 移除指定位置的一个元素或一段元素 Y -
erase_after() 移除指定位置后面的一个元素或一段元素 - Y
remove() 移除所有和参数匹配的元素 Y Y
remove_if() 移除满足一元函数条件的所有元素 Y Y
unique() 移除所有连续重复的元素 Y Y
clear() 移除所有的元素,容器大小变为0 Y Y
swap() 交换两个容器的元素 Y Y
sort() 对元素进行排序 Y Y
merge() 合并两个有序容器 Y Y
splice() 移动指定位置前面的所有元素到另一同类型的list中 Y -
splice_after() 移动指定位置后面的所有元素到另一同类型的list中 - Y

总结

  • array<T, N>容器可以存放N个类型为T的元素
  • vector<T>容器可以存储任意个数的T类型元素
  • 可以在vector的末尾高效地添加或删除元素;但在序列内部添加或删除元素会变慢,因为需要移动元素
  • 可以使用索引来访问vector中的元素,或者调用会检查索引的成员函数at()
  • deque<T>是一个双端队列,可以存储任意个数的T类型元素
  • 可以在deque容器的头部和尾部高效地添加或删除元素
  • array, vector, deque容器提供了const和non-const随机访问迭代器和反向迭代器
  • list<T>是一个存储T类型元素的双向链表
  • 只能以从序列头部或尾部遍历元素的方式访问list容器中的元素
  • list容器提供双向迭代器
  • forward_list<T>容器以单链表的形式存储T类型的元素,但是比list容器更快,更简单
  • forward_list容器提供正向迭代器

猜你喜欢

转载自blog.csdn.net/qq_27304213/article/details/107415600