赴一场与STL库list的约会:只为见你最美一面

目录

list的使用:

list容器提供的许多的接口,如:

list构造函数:

n个val构造:

空构造:

拷贝构造:

迭代器区间构造:

list迭代器使用:

begin(),end()迭代器:

rbegin(),rend()迭代器:

list常用接口:

empty():

迭代器失效:


底层实现是一个双链表,它的插入与删除操作时间复杂度为o(1)。

list的迭代器是双向迭代器,允许++--操作,

像string、vector容器是随机迭代器,允许++--+-操作,

像forwad_list是随机迭代器,只允许++操作

list的使用:

list容器提供的许多的接口,如:

list构造函数:

n个val构造:
#include<iostream>
#include<list>
using namespace std;
int main()
{
	list<int>i1(10, 1);
	for (auto x:i1)//输出10个1
	{
		cout << x << " ";
	}
	return 0;
}
空构造:
#include<iostream>
#include<list>
using namespace std;
int main()
{
	list<int>i1;
	return 0;
}
拷贝构造:
#include<iostream>
#include<list>
using namespace std;
int main()
{
	list<int>i1;
	return 0;
}
迭代器区间构造:
#include<iostream>
#include<list>
using namespace std;
int main()
{
	list<int>i1 = {1,2,3,4,5,6};
    list<int>i2(i1.begin(),i1.end());
    for (auto x:i2)
    {
      cout << x << " ";
    }
	return 0;
}

list迭代器使用:

迭代器这里可以暂时理解为指针,像指针一样指向list的节点

begin(),end()迭代器:

//正向迭代器
list<int>i1 = {1,2,3,4,5,6};
list<int>::iterator it1 = i1.begin();
while (it1!=i1.end())
{
	cout << *it1 << " ";
	++it1;
}

rbegin(),rend()迭代器:

/*除了forward_list容器之外,其他容器都支持反向迭代器
反向迭代器
1.定义:

在容器中从尾元素向首元素反向移动的迭代器

对于反向迭代器,递增和递减的含义会颠倒过来

递增一个反向迭代器会移动到前一个元素

递减一个迭代器会移动到下一个元素*/
----------------------------------
/*
  rbegin(),指向一组元素的最后一个元素的位置
  rend(),指向第一个元素的前一个位置
*/
  
list<int>i1 = { 1,2,3,4,5,6 };
for (auto it=i1.rbegin();it!=i1.rend();it++)
{
	cout << *it << " ";
}
---------------------------------
list<int>i1 = {1,2,3,4,5,6};
list<int>::reverse_iterator it1 = i1.rbegin();
while (it1!=i1.rend())
{
	cout << *it1 << " ";
	++it1;
}

list常用接口:

empty():

list<int>i1 = {1,2,3,4,5};
if (i1.empty())
{
	cout << "true" << endl;
}
else
{
	cout << "0" << endl;
}
//返回list中有效节点个数
list<int>i1 = {1,2,3,4,5};
cout << i1.size() << endl;
//返回list第一个元素值的引用
list<int>i1 = {1,2,3,4,5};
cout << i1.front() << endl;
//返回list最后一个元素值的引用
list<int>i1 = {1,2,3,4,5};
cout << i1.back() << endl;
//insert
/*
在迭代器位置插入一个值
在迭代器位置插入n个值
在迭代器位置插入一个迭代器区间的值
*/

迭代器失效:

对于vector,迭代器失效是当vector进行扩容是,原迭代器还指向就空间的位置,没有更新,所以导致失效,如果像正常访问这个迭代器,就需要更新一下迭代器的位置

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值