list和vector的用法基本相同,区别如下:

  • list可以头尾插入和删除,效率一样,vector只有尾部插入和删除效率才高,头部操作效率很低

  • list的排序有专有的接口,不能使用全局的接口,原因是list中的节点不能随机访问,vector中的节点可以随机访问

  • vector是连续存储,list不是连续存储

基本用法

#include <iostream>
#include <list> using namespace std; /*
clear() 清空链表
empty() 判断list是否为空
size() 获取list中的元素个数
pop_back() 删除最后一个元素(效率高)
pop_front() 删除第一个元素(效率高)
push_back() 在list的末尾添加一个元素(效率高)
push_front() 在list的头部添加一个元素(效率高)
erase() 删除指定元素
sort() 排序
reverse() 反转
*/ int main()
{
list<int> l; l.push_back();
l.push_back();
l.push_front();
l.push_front(); cout << "size : " << l.size() << endl; l.sort(); // 特有排序接口 reverse(l.begin(), l.end()); // 4 3 2 1
for(list<int>::iterator it = l.begin(); it != l.end(); ++it)
{
cout << *it << ends;
}
cout << endl; l.clear(); cout << "size : " << l.size() << endl; return ;
}

循环删除(类似vector)

#include <iostream>
#include <list> using namespace std; int main()
{
list<int> l; l.push_back();
l.push_back();
l.push_front();
l.push_front(); // 循环删除
for(list<int>::iterator it = l.begin(); it != l.end();)
{
if(*it == )
{
it = l.erase(it);
}
else
{
++it;
}
} // 2 3 1
for(list<int>::iterator it = l.begin(); it != l.end(); ++it)
{
cout << *it <<ends;
}
cout << endl; return ;
}

随机推荐

  1. 升级OPENSSH踩过的坑

    安装三个必要依赖包yum install gcc zlib-devel openssl-devel上传安装包,创建一个/tmp目录下,然后解压,将/etc/ssh/目录移动到本地解压安装包,进入安装目 ...

  2. skywalking的插件管理agent管理

    转载自博客:https://my.oschina.net/eacdy/blog/4304312/print Java Agent是插件化.可插拔的.Skywalking的插件分为三种: 引导插件:在a ...

  3. JavaWeb网上图书商城完整项目-数据库操作工具类2-MapHandle的高级用法

    1.现在在上面一章的基础上,我们引入一个address表,该表记录person类的地址,address表的格式如下所示 现在person类要和address表想关联,得到当前联系人的住宅地址,我们应该 ...

  4. 新一代APM链路监控选型的一个总结重点是skywalking和pinpoint的对比

    链路监控选型的一个比较:1.cat框架:需要对业务代码有较强的侵入性,对代码的侵入性很大,集成成本较高,风险较大:2.zipkin框架:仅支持spring cloud,不支持dubbo,功能及其简单, ...

  5. android 6.0 权限设置详解

    从Android 6.0版本开始,在安装应用时,该应用无法取得任何权限. 相反,在使用应用的过程中,若某个功能需要获取某个权限,系统会弹出一个对话框,显式地由用户决定是否将该权限赋予应用. 只有得到了 ...

  6. redis基础二----操作hash

    上面usr就是hash的名字,usr这个hash中存储了key 为id.name和age的值 一个hash相当于一个数据对象,里面可以存储key为id name age的值 2.批量插入一个hash数 ...

  7. 深入理解RocketMQ(九)---实战(控制台搭建)

    rocketMQ控制台搭建 (1)下载rocketmq-console代码:https://github.com/875279177/incubator-rocketmq-externals (2)修 ...

  8. 状压DP之LGTB 与序列

    题目 思路 这道题竟然是状压DP,本人以为是数论,看都没看就去打下一题的暴力了,哭 \(A_i\)<=30,所以我们只需要考虑1-58个数,再往后选的话还不如选1更优,注意,1是可以重复选取的, ...

  9. 「杂烩」精灵魔法(P1908逆序对弱化版)

    「杂烩」精灵魔法(P1908逆序对弱化版) 题面: 题目描述 \(Tristan\)解决了英灵殿的守卫安排后,便到达了静谧的精灵领地--\(Alfheim\) .由于$ Midgard$ 处在$ Al ...

  10. 传递 HDU - 5961 题解

    题目传送门 分析 题目大意:给一个竞赛图,将图分成两部分,判断两部分的图是否符合传递闭包,a->b,b->c,则a->c 这道题用Floyd硬跑的显然n\({^3}\)会T 如果用b ...