一、特性
单向链表,只支持单向顺序访问(不支持快速随机访问),是C++11标准新增的类型
可类比于数据结构——单(向)链表
1. 没有size操作
- forward_list为了追求性能,省去了size操作
2. 没有反向容器的成员
成员 | 说明 |
reverse_iterator | 按逆序寻址元素的迭代器 |
const_reverse_iterator | 不能修改元素的逆序迭代器 |
c.rbegin() c.rend() | 返回指向 c 的尾元素和首元素之前位置的迭代器 |
c.crbegin() c.crend() | 返回const_reverse_iterator |
3. 其迭代器不支持递减运算符
4. 并未定义insert、emplace和erase
- 因为在forward_list中添加或删除元素与其他容器上的操作的实现方式不同,故forward_list定义了相似而不同的操作:insert_after、emplace_after和erase_after
- 为了支持这些操作,forward_list定义了before_begin(),它返回一个首前迭代器
二、不支持的操作
操作 | 说明 |
c.pop_back() | |
c.push_back(t) c.emplace_back(args) | 在c的尾部创建一个值为t或由args创建的元素 |
c.back() | 每个顺序容器都有的操作,除了forward_list |
c[n] | 返回 c 中下标为 n 的元素的引用 |
c.at(n) | 只适用于string、vector、deque、array |
c.size() | 返回容器中元素的数目 |
三、一些支持的操作
操作 | 说明 |
c.front() | 每个顺序容器都有的操作 |
c.maxsize() | 返回一个大于或等于该容器所能容纳的最大元素数的值 |
c.pop_front(args) | vector和string不支持 |
c.push_front(args) | |
c.before_begin() c.cbefore_begin() | |
c.insert_after(args) | |
c.erase_after(args) |