list容器的介绍及使用

目录

一、list容器的底层结构

二、list的使用

        1.list容器的构造

2.list的访问和迭代器的使用

3.1list容器的基本操作

3.2  list  capcity

三、list和vector对比

   ​


一、list容器的底层结构

1.list容器是一个可以在任意位置插入和删除的序列容器,并且可以双向迭代

2.list容器的底层是一个带头双向链表,双向链表的每个结点独立存储在一个空间,每个结点有指向前一个结点和后一个结点的指针。

3.与其他容器相比,list可以在任意结点插入和删除元素的效率很高,因为链表不是连续的存储空间。

4.同时他也不支持随机访问数据,所以当频繁访问数据时,list不适合用作容器。

二、list的使用

        1.list容器的构造

(1)list (size_type n, const value_type& val = value_type())      构造的 list 中包含 n 个值为 val 的元素
(2)list()           构造空的 list
(3)list (const list& x)          拷贝构造函数
(4)list (InputIterator first, InputIterator last)         用[first, last) 区间中的元素构造 list

2.list的访问和迭代器的使用

1.访问list容器的元素,C++ 提供了几种

back();访问尾部元素

front();访问首元素

2.当我们要遍历时,可以通过迭代器来实现,下面是正向迭代

3.范围for也可以访问,他的底层也是迭代器的封装

4.当然我们把迭代器反过来读取,也就是可以用反向迭代器来访问。和正向迭代器一样

3.1list容器的基本操作

1.push_back();//尾插,从后面插入数据

2.push_front();//头插

3.pop_back();//尾删

4.pop_front();//头删

5.insert();//插入

        :insert(iterator position, const value_type& val)在某个位置插入一个值,有返回值

        :insert(iterator position, size_type n, const value_type& val)在某个位置插入n个值,无返回值

        :insert(pos,it.begin(),it.end())从某个位置开始,区间赋值

6.erase();//删除数据,erase时存在迭代器失效问题,原因是删除数据时,指针原来指向的位置已经被释放,对原指针再进行操作,就会报错。解决方法:更新指针

        :erase(iterator position)删除某个位置的值

        :erase(it.begin(),it.end())  删除某个区间的值

7.clear();//全部删除

8.swap();//交换容器里的值

9.resize();//重新分配容器容量,新的比原来的小就分割,比原来的大就填充空的

10.assign();//向容器中添加一段元素

3.2  list  capcity

1.empty();//判断是否为空

2.size();//返回容器大小

三、list和vector对比

   

我们在实际应用时,根据自己所需选择适合的容器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Though even

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

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

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

打赏作者

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

抵扣说明:

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

余额充值