博客
关于我
C++STL容器----List
阅读量:357 次
发布时间:2019-03-04

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

概念

List底层就是一个双向带头循环链表,与vector相比,List的插入与删除更加方便,只需要O(1)的时间复杂度,但是缺点也很明显,就是不能像vector一样支持随机访问。所以在使用时要根据实际情况进行选择。

创建一个List

使用List要包含头文件 <List>

List共有4种构造函数。

#include 
int main(){ List
l1;//无参构造,存储类型为int型 List
l2(n, val);//初始化n个val值存放在l2中 int arr[4] = {0,1,2,3}; List
l3(arr, arr + 4);//迭代器构造 List
l4(l3)//拷贝构造 return 0;}

List访问方式

List有有两种访问方式:

第一种,范围for循环

#include 
#include
using namespace std;int main(){ int arr[4] = {0,1,2,3}; List
l3(arr, arr + 4);//迭代器构造 for(int num : l3){ cout << num << " "; } cout << endl; return 0;}

第二种,迭代器访问

#include 
#include
using namespace std;int main(){ int arr[4] = {0,1,2,3}; List
l3(arr, arr + 4);//迭代器构造 List
::iterator it = l3.begin(); while(it != l3.end()){ cout << *it << " "; it++; } cout << endl; return 0;}

List常见接口

迭代器接口:

#include 
int main(){ List
l1;//无参构造 //l1.begin();返回l1的第一个元素的迭代器 //l1.end();返回最后一个元素的next域 //l1.rbegin();返回最后一个元素的迭代器 //l1.rend();返回第一个元素的prev域 return 0;}

空间相关接口:

#include 
int main(){ List
l1;//无参构造 //l1.empty();//判断l1是否为空 //l1.size();//返回l1有效元素个数 return 0;}

增删查改接口:

#include 
int main(){ List
l1;//无参构造 //l1.push_back(val);尾插val数据 //l1.push_front(val);头插val数据 //l1.pop_back();尾删一个数据 //l1.pos_front();头删一个数据 //l1.insert(pos, val);在pos位置前面插入val数据 //l1.erase(pos);删除pos位置数据 List
l2(n, val);//初始化n个val值存放在l2中 //l1.swap(l2);//交换l1与l2的内容 //l1.clear();清除l1所有有效数据 return 0;}

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

你可能感兴趣的文章
jQuery练习t81
查看>>
使用async、await改善异步代码
查看>>
Idiot 的间谍网络
查看>>
初探SSRF漏洞
查看>>
pythonBug入门——从零开始学python
查看>>
js-禁止右键菜单代码、禁止复制粘贴代码
查看>>
SpringBoot中使用Mybatis访问MySQL数据库(使用xml方式)
查看>>
数组--Go语言学习笔记
查看>>
Redis (三)——Linux 上安装 Redis
查看>>
java 重写(override)和重载(overload)区别
查看>>
java 多态类型转换
查看>>
常用正则表达式
查看>>
XML:采用XHTML和CSS设计可重用可换肤的WEB站点
查看>>
Tomcat6中web项目部署路径webapps和wtpwebapps的区别
查看>>
Java判断字符串是否为金额
查看>>
软件架构-zookeeper快速入门
查看>>
angr学习笔记(7)(malloc地址单元符号化)
查看>>
「CF149D」括号涂色 区间DP好题
查看>>
树状数组 模板总结
查看>>
「NOI2015」程序自动分析 并查集题解
查看>>