list容器

文章介绍了C++STL中的list容器,它是一种非连续存储的双向链表。list容器允许高效地在任意位置进行插入和删除操作,其迭代器支持双向移动。示例代码展示了如何向list添加元素、在特定位置插入元素、删除特定值以及对list进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、list容器简介

在这里插入图片描述

链表是以中物理存储单元上的非连续、非顺序的存储结构,数据元素的逻辑顺序都是通过链表中的指针连接次序实现的。链表由一系列的结点(链表中每一个元素被称为结点)组成,结点可以在运行时动态生成。每一个结点包括两部分组成:一部分是数据域 ,另一部分存储的是下一个节点的指针域。相比较于 vector 的连续存储空间,list就显得负责很多,它的好处是每次插入或者删除一个元素时,就是配置或者释放一个元素的空间。因此,对于list 而言,对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或者元素的删除,list永远是常数时间。List 和 vector 是两个被常用的容器,List是一个双向链表,所以list 容器的迭代器 是双向迭代器

2、list 容器 API操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

3、list容器应用

#include
#include
#include
using namespace std;
void printListInt(list &l)
{
list::iterator it;
for(it=l.begin(); it!=l.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
}

void test01()
{
list l1;
l1.push_back(10);
l1.push_back(20);
l1.push_back(30);
l1.push_front(40);
l1.push_front(50);
l1.push_front(60);

printListInt(l1);//60 50 40 10 20 30
//list容器 是双向迭代器 不支持+2 支持++,因为++是被重载了
list::iterator it=l1.begin();
it++;
it++;
l1.insert(it, 3, 100);
printListInt(l1);//60 50 100 100 100 40 10 20 30

//删除所有100
l1.remove(100);
printListInt(l1);//60 50 40 10 20 30

//对链表排序
//STL提供的算法 只支持 随机访问迭代器,而list是双向迭代器 所以sort不支持list
// l1.sort(greater());
l1.sort(); //所以list自己提供规则
printListInt(l1);//10 20 30 40 50 60
}

int main(int argc, char *argv[])
{
test01();
return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q渡劫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值