forword_list学习之创建,初始化assign,赋值操作operator=, 元素访问front,交换内容swap,检查容器是否为空empty
forword_list是C++11新增的一个顺序容器,它是支持从容器的任何位置快速插入和移动元素的容器。不支持快速随机访问。它实现为单链表,且实质上与其在C中实现相比无任何开销。与std::list相比,此容器在不需要 双向迭代时提供更有效地利用空间的存储。下面我们来学习它的 基本用法,首先来看它的创建,初始化,赋值,元素访问front,内容接换swap,判空empty等操作
代码实现:
#include <forward_list>
#include <iostream>using namespace std;void createForword_listInit()
{//1.创建空forword_listforward_list<int> list1;cout << "list1.isEmpty = " << list1.empty() << endl;//2.创建list2有2个元素,值为随机值forward_list<int> list2(2);cout << "list2.isEmpty = " << list2.empty() << endl;cout << "list2的值为:" << endl;for(auto &val: list2){cout << val << "\t";}cout << endl;//3.创建list3有3个元素,分别为21, 22, 23forward_list<int> list3 = {21, 22, 23};cout << "list3.isEmpty = " << list3.empty() << endl;cout << "list3的值为:" << endl;for(auto &val: list3){cout << val << "\t";}cout << endl;//4.创建list4,用list3赋值forward_list<int> list4 = list3;//forward_list<int> list4(list3);//这两种方法都可以cout << "list4.isEmpty = " << list4.empty() << endl;cout << "list4的值为:" << endl;for(auto &val: list4){cout << val << "\t";}cout << endl;//5.创建list5用assign进行赋值forward_list<int> list5;list5.assign({24, 25, 26, 27});cout << "list5的值为:" << endl;for(auto &val: list5){cout << val << "\t";}cout << endl;//6.创建list6用list4进行初始化forward_list<int> list6(list4.begin(), list4.end());cout << "list6的值为:" << endl;for(auto &val: list6){cout << val << "\t";}cout << endl;//7.创建list7用assign设定容器大小和初始值forward_list<int> list7;list7.assign(5, 18);//list7有5个元素,每个元素为18cout << "list7的值为:" << endl;for(auto &val: list7){cout << val << "\t";}cout << endl;//8.访问forward_listforward_list<int> list8;list8.assign({28, 28});cout << "list8.front = " << list7.front() << endl;cout << "list8的值为:" << endl;for(auto &val: list8){cout << val << "\t";}cout << endl;//9.swap交换两个forward_listauto it1 = list6.begin();auto it2 = list8.begin();int &ref1 = list6.front();int &ref2 = list8.front();cout << "*it1 = " << *it1 << " *it2 = " << *it2 << " ref1 = " << ref1 << " ref2 = " << ref2 << endl;cout << "swap after======" << endl;list6.swap(list8);cout << "list6的值为:" << endl;for(int c: list6){cout << c << "\t";}cout << endl;cout << "list8的值为:" << endl;for(int c: list8){cout << c << "\t";}cout << endl;cout << "*it1 = " << *it1 << " *it2 = " << *it2 << " ref1 = " << ref1 << " ref2 = " << ref2 << endl;cout << endl;
}int main()
{createForword_listInit();cout << endl;cout << "Hello World!" << endl;return 0;
}
运行结果:
注意,交换后迭代器与引用保持与原来的元素关联,例如it1指向的元素还是21,ref1引用的元素还21。
参考:
https://zh.cppreference.com/w/cpp/container/forward_list
forword_list学习之创建,初始化assign,赋值操作operator=, 元素访问front,交换内容swap,检查容器是否为空empty相关推荐
- multimap学习之创建,初始化,赋值操作operator=, empty,size,max_size
multimap 是关联容器,含有键值对的已排序列表,其功能与map一样,唯一不同的是,它容许多个元素拥有同一键.本篇学习map的创建,初始化,赋值操作operator=, empty,size,ma ...
- multiset学习之创建,初始化,赋值操作operator=, empty,size
本篇开始学习multiset,与set相比,multiset可以有多个相关的关键字,其它也set的功能一样,下面我们先来学习它的创建,初始化,赋值操作operator=, empty,size等相关操 ...
- set学习之创建,初始化,赋值操作operator=, empty,size
set 是关联容器,含有 Key 类型对象的已排序集.用比较函数 比较 (Compare) 进行排序.搜索.移除和插入拥有对数复杂度. set 通常以红黑树实现.本篇学习set的创建及初始化. 示例代 ...
- List的初始化和赋值操作
//初始化 //1.构造 List 后使用 List.add 初始化 List<String> stringList = new LinkedList<>(); stringL ...
- html jq移到出现内容,jquery操作html元素之( 获得内容和属性)
jQuery DOM 操作 jQuery 中非常重要的部分,就是操作 DOM 的能力. jQuery 提供一系列与 DOM 相关的方法,这使访问和操作元素和属性变得很容易. 提示:DOM = Docu ...
- java删除数组中指定元素_java学习中如何删除数组中的指定元素
java的api中,并没有提供删除数组中元素的方法.虽然数组是一个对象,不过并没有提供add()remove()或查找元素的方法.这就是为什么类似ArrayList和HashSet受欢迎的原因. 不过 ...
- c++ map初始化同时赋值_Golang学习笔记五--map
map的创建 func main() {//创建 mapstudens := map[string]string{"name": "张三","age& ...
- C语言--关于指针两种初始化赋值操作
首先,什么叫做指针的初始化? int * p = NULL:在定义指针变量p的同时把p的值设置为0x00000000;而不是把*p的值设置为0x00000000.这个过程叫做初始化. 探讨: int ...
- 深度学习(6)TensorFlow基础操作二: 创建Tensor
深度学习(6)TensorFlow基础操作二: 创建Tensor 一. 创建方式 1. From Numpy,List 2. zeros,ones (1) tf.zeros() (2) tf.zero ...
最新文章
- 记于2014-12-9
- android 混淆打包教程,Android studio 混淆打包
- 2016年ADAS行业发展潜力及行业发展趋势分析【图】
- nuxt.js的核心代码_Nuxt.js中的通用应用程序代码结构
- 高橋君とカード / Tak and Cards(AtCoder-2037)
- c++ 表达式必须包含指向类的指针类型_C++:18const关键字(附常量指针、指针常量、常量指针常量)...
- 【原创】centos常见问题集锦
- 使用Rich Edit控件
- 二阶切比雪夫多项式实现(scala版、python版)
- build lavas 失败_构建配置 - Lavas 教程
- 一文了解CSP、NOIP、NOI 三大信息学赛事
- 14年和15年的IT公司排行
- 瓜娃系列 (6) - ComparisonChain和primitives包
- Linux wait和waitpid和kill
- android声纹识别技术,基于Android平台的声纹识别系统的研究与实现
- Right Backup(云端数据备份软件)v8.1官方版
- 传统企业怎么通过抖音引流到微信
- Python用Pillow(PIL)进行简单的图像操作(边缘增强、锐利、平滑等)
- PHP开发之-微信网页授权获取用户基本信息
- 8-9(CCPD车牌数据集)
热门文章
- 淘宝无痕下单生成器一拖多入口生成器(附api生成接口以代码)
- managedQuery过时的解决办法
- 红包雨架构设计---2、流程设计
- 在java项目中咋样测试接口_请问java程序的接口中的测试类该怎么写?有什么用呢?...
- java内存泄漏和内存溢出
- linux编译器更新,英特尔 Fortran 编译器 Linux 版
- cuda必须装在c盘吗_CUDA一些小知识整理
- Java static修饰方法
- can‘t resolve symble R
- Linux系统selinux目录,SELinux深入理解