博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
forword_list学习之创建,初始化assign,赋值操作operator=, 元素访问front,交换内容swap,检查容器是否为空empty
阅读量:2193 次
发布时间:2019-05-02

本文共 2785 字,大约阅读时间需要 9 分钟。

forword_list是C++11新增的一个顺序容器,它是支持从容器的任何位置快速插入和移动元素的容器。不支持快速随机访问。它实现为单链表,且实质上与其在C中实现相比无任何开销。与std::list相比,此容器在不需要 双向迭代时提供更有效地利用空间的存储。下面我们来学习它的 基本用法,首先来看它的创建,初始化,赋值,元素访问front,内容接换swap,判空empty等操作

代码实现:

#include 
#include
using namespace std;void createForword_listInit(){ //1.创建空forword_list forward_list
list1; cout << "list1.isEmpty = " << list1.empty() << endl; //2.创建list2有2个元素,值为随机值 forward_list
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, 23 forward_list
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
list4 = list3; //forward_list
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
list5; list5.assign({24, 25, 26, 27}); cout << "list5的值为:" << endl; for(auto &val: list5) { cout << val << "\t"; } cout << endl; //6.创建list6用list4进行初始化 forward_list
list6(list4.begin(), list4.end()); cout << "list6的值为:" << endl; for(auto &val: list6) { cout << val << "\t"; } cout << endl; //7.创建list7用assign设定容器大小和初始值 forward_list
list7; list7.assign(5, 18);//list7有5个元素,每个元素为18 cout << "list7的值为:" << endl; for(auto &val: list7) { cout << val << "\t"; } cout << endl; //8.访问forward_list forward_list
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_list auto 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。

参考:

 

 

转载地址:http://wbiub.baihongyu.com/

你可能感兴趣的文章
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>
绑定CPU逻辑核心的利器——taskset
查看>>
Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题
查看>>
c结构体、c++结构体和c++类的区别以及错误纠正
查看>>
Linux下查看根目录各文件内存占用情况
查看>>
A星算法详解(个人认为最详细,最通俗易懂的一个版本)
查看>>
利用栈实现DFS
查看>>
逆序对的数量(递归+归并思想)
查看>>
数的范围(二分查找上下界)
查看>>
算法导论阅读顺序
查看>>
Windows程序设计:直线绘制
查看>>
linux之CentOS下文件解压方式
查看>>
Django字段的创建并连接MYSQL
查看>>
div标签布局的使用
查看>>
HTML中表格的使用
查看>>
(模板 重要)Tarjan算法解决LCA问题(PAT 1151 LCA in a Binary Tree)
查看>>
(PAT 1154) Vertex Coloring (图的广度优先遍历)
查看>>
(PAT 1115) Counting Nodes in a BST (二叉查找树-统计指定层元素个数)
查看>>