一起来读书202- c++标准模板库编程实战:第二章 使用序列容器
其他
2020-08-13 10:19:48
阅读次数: 0
摘要
序列容器一些操作
详情
序列容器
- 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