forward_list
一、特性
单向链表,只支持单向顺序访问(不支持快速随机访问),是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) |
forward_list的更多相关文章
- C++ std::forward_list
std::forward_list template < class T, class Alloc = allocator > class forward_list; Forward li ...
- STL之序列式容器list与forward_list
List (双向链表) 与 forwardlist (单向链表) 算是非常基础的数据结构了,这里只是简单介绍下其结构及应用. 以list为例: 其节点模板: template <class T& ...
- forward_list例子
9.28 编写函数,接受一个forward_list<string>和两个string共三个参数.函数应在链表中查找第一个string,并将第二个string插入到紧接着第一个string ...
- 编写程序,查找并删除forward_list<int>中的奇数元素
#include<iostream> #include<forward_list> using namespace std; int main() { forward_list ...
- 特殊的forward_list操作
为了理解forward_list为什么有特殊版本的添加和删除操作,考虑当我们从一个单向链表中删除一个元素时会发生什么.当添加或删除一个元素时,删除或添加的元素之前的那个元素的后继会发生变化.为了添加或 ...
- STL库之单链表:forward_list
class template forward_list <forward_list> template < class T, class Alloc = allocator<T ...
- QLinkedList和std::forward_list
forward_list forward_list是C++11版本才有的.forward_list被实现为单链表,而list是一个双向链表,所以forward_list要比list高效一些.forwa ...
- QLinkedList和std::forward_list(都是双向链表,不支持operator[],好处可能是插入和删除都比较快)
forward_list forward_list是C++11版本才有的.forward_list被实现为单链表,而list是一个双向链表,所以forward_list要比list高效一些.forwa ...
- 一个forward_list C++primer
#include<iostream> #include<forward_list> using namespace std; int main() { forward_list ...
- C++ 头文件系列(forward_list)
简介 forwrad_list字面意思为前向列表,但实际上它是一种单向列表,只能从单一方向遍历. 单向链表实现 forward_list内部是用单向列表实现的,并且设计该库的时候就是以近乎手写的单向链 ...
随机推荐
- 一台ECS服务器,部署多(两)应用,且应用配置不同域名
场景 产品环境服务器有两台,前后端各分配一台服务器.现在在不增加机器的情况下,需要增加部署一套服务给台北地区服务. 现有的前端部署方案. 产品环境部署方案详解 实现 配置NAT步骤 ECS配置多网卡, ...
- 使用ContentType处理大量的外键关系
问题分析 在之前的一个商城的项目中使用了mysql, 提到mysql就是外键, 多对多等等一系列的表关系 因为是一个商城的项目, 这里面有优惠券, 商品有很多的分类, 不同的商品又有不同的优惠券 其实 ...
- Scala的符号入门
Spark是由Scala编写的.Spark作为一款十分易用高效的大数据框架使用越来越广泛,Scala也随之有更多的人去学习. 语言相通,相信有python.java基础的程序员学习Scala并没有太大 ...
- 【AD】自己画板的备忘
快捷键: [Ctrl + M ]计算出两点之间的距离,画电路板时会用到 [Ctrl + Q ]在设定X.Y..等等的地方,快捷键可以公英制快速切换 [shift + 空格键 ]在布线的同时,此快捷键可 ...
- linux 通过 openconnect 来连接学校内网
参考 http://xingda1989.iteye.com/blog/1969908 https://blog.csdn.net/edin_blackpoint/article/details/70 ...
- Divisibility题解
From lyh 学长 2018.5.3 信(liang)心(liang)杯T3 一道略弱的数论题. 题目描述 给定 n个数,问是否能从中选出恰好 k个数,使得这些数两两之差可以被 m 整除. 输入输 ...
- 两步搞定一台电脑同时开启多个tomcat
1. 修改tomcat中的某些参数,为了避免启动tomcat时出现冲突,编辑bin/startup.bat, 在文件第一行添加如下两行(必须第一行才有效) SET JAVA_HOME=C:\webso ...
- axios请求封装和异常统一处理
前端网络请求封装前端采用了axios来处理网络请求,为了避免在每次请求时都去判断各种各样的网络情况,比如连接超时.服务器内部错误.权限不足等等不一而足,我对axios进行了简单的封装,这里主要使用了a ...
- 算法-PHP实现八大算法
八大算法原理详解 交换函数:注意要按引用传递,否则无法真正交换两个数的值 function exchange(&$a, &$b){ $temp = $a; $a = $b; $b = ...
- day 4 集合
1.集合 In [1]: a = (11,22,33,11,22,33) In [2]: a Out[2]: (11, 22, 33, 11, 22, 33) #元组 In [3]: b = [11, ...