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内部是用单向列表实现的,并且设计该库的时候就是以近乎手写的单向链 ...
随机推荐
- Spring的jar包不同版本的下载地址
http://repo.spring.io/release/org/springframework/spring/ 可以直接下载不同版本的spring jar包
- Linux系统结构 详解(转)
Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统.部分层次结构如图1-1所 ...
- tornado用户指引(四)------tornado协程使用和原理(三)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/happyAnger6/article/details/51291221几种常用的协程方式: 1.回调 ...
- angular-sanitize 插件的使用,获取带html标签的内容
1,安装 angular-sanitize bower install angular-sanitize --save 引入到 html <script src="/bower_com ...
- Appointment Helper
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft.Xrm.Sdk.Que ...
- Flink基本概念
Flink基本概念 1.The history of Flink? 2.What is Flink? Apache Flink是一个开源的分布式.高性能.高可用.准确的流处理框架,主要由Java代码实 ...
- python类的多态
1. 什么是多态 多态指的是同一种/类事物的不同形态 2. 为何要用多态 多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象 多态性的精髓:统一 ...
- 成都Uber优步司机奖励政策(3月24日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 6、Java并发编程:volatile关键字解析
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在 ...
- Typeahead的使用总结
Typeahead是Bootstrap的自动补全JS插件. 最近项目中用到,总结一下. 与autocomplish类似,通过ajax实现,实现流程是前台输入关键字,后台根据关键字查询出信息,构造jso ...