C++ STL 容器部分有关list 链表容器的基本操作

#include<iostream>

using namespace std;
#include "list"   //list模型的头文件

/*总结*/

//相当于一个双向链表
//1 list基本与其余容器模型差不多类似  注意一点就是不允许随机插入
//2 区间删除  注意!  如果是l1.erase(0,3);  就会删除 位置 0 1 2 但是位置3不会被删除  这就是一个左闭右开区间 【 )(这里0 3 代表迭代器的位置 )
//3  与其余容器相同也可以放置类对象,或者指针
//4 有一个remove函数比较特殊  表示删除链表中相同的元素
//5  链表的结点index序号是从0号位置开始的  ,例如在3号位置插入,则原来的三号位置会变成4号位置 4号变成5号位置
//list 链表模型的基本操作


void main71()
{
	list<int> l1;

	cout << "list的长度:" << l1.size() << endl;

	for (int i = 0; i < 10; i++)
	{
		l1.push_back(i);  //list的尾插法
	}
	list<int>::iterator it = l1.begin();  //有关迭代器的操作
	cout << "打印输出:";
	while (it != l1.end())
	{
		cout << *it << " ";
		it++;
	}
	cout << endl;
	cout << "list的长度:" << l1.size() << endl;


	//list不允许随机访问

	it = l1.begin();   //重新定义迭代器
	it++;
	//it = it + 2;  //这里会报错,说明问题


	it = l1.begin();   //重新定义迭代器  此时it指向0号位置
	it++;   //将迭代器向后加一,指向1号位置
	it++;   //此时应该指向2号位置
	l1.insert(it, 100);  //代表在it位置处插入元素100 并且原it位置元素后移一位

	cout << "打印插入后的链表:" ;

	list<int>::iterator it1 = l1.begin();  //有关迭代器的操作
	while (it1 != l1.end())
	{
		cout << *it1 << " ";
		it1++;
	}

}

//list链表的删除操作
void main72()
{
	list<int> l1;

	cout << "list的长度:" << l1.size() << endl;

	for (int i = 0; i < 10; i++)
	{
		l1.push_back(i);  //list的尾插法
	}
	list<int>::iterator it = l1.begin();  //有关迭代器的操作
	list<int>::iterator it1 = l1.begin();  //有关迭代器的操作
	cout << "打印输出:";
	while (it != l1.end())
	{
		cout << *it << " ";
		it++;
	}
	cout << endl;

	//区间删除  注意!  如果是l1.erase(0,3);  就会删除 位置 0 1 2 但是位置3不会被删除  这就是一个左闭右开区间 【 )(这里0 3 代表迭代器的位置 )
	it = l1.begin();  //指向位置0
	it1++;
	it1++;
	it1++;  //移向位置3出 0 1 2 3
	l1.erase(it, it1);

	cout << "打印输出删除之后1:";
	it = l1.begin();

	while (it != l1.end())
	{
		cout << *it << " ";
		it++;
	}


	//指定位置删除

	l1.erase(l1.begin());     //删除链表首个元素


	cout << endl;
	cout << "打印输出删除之后2:";
	it = l1.begin();

	while (it != l1.end())
	{
		cout << *it << " ";
		it++;
	}

	//指定元素删除 例如删除所有的3
	l1.insert( l1.begin(),3);
	l1.insert(l1.begin(), 3);
	l1.insert(l1.begin(), 3);
	cout << endl;
	cout << "链表的初始化:";
	it = l1.begin();

	while (it != l1.end())
	{
		cout << *it << " ";
		it++;
	}
	cout << endl;

	l1.remove(3);   //将链表中的元素3都删除

	cout << "指定元素删除之后:";
	it = l1.begin();

	while (it != l1.end())
	{
		cout << *it << " ";
		it++;
	}

	


}

int main()
{
	//main71();    //list的基本操作
	main72();//list链表的删除操作
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值