STL_list应用举例



#include<iostream>
using namespace std;
#include<list>
#include<algorithm>
int main()
{
	int i;
	list<int> ilist;
	cout << "size=" << ilist.size() << endl;  //size=0
	ilist.push_back(0);
	ilist.push_back(1);
	ilist.push_back(2);
	ilist.push_back(3);
	ilist.push_back(4);
	cout << "size=" << ilist.size() << endl;  //size=5

	list<int>::iterator ite;
	for (ite = ilist.begin(); ite != ilist.end(); ite++)
		cout << *ite << " ";   //0 1 2 3 4
	cout << endl;

	ite = find(ilist.begin(), ilist.end(), 3);  //查找3的位置
	if (ite != ilist.end())
		ilist.insert(ite, 99);   //在3的位置插入99,接下来3之后的数据向后挪

	cout << "size=" << ilist.size() << endl;
	cout << *ite << endl;
	cout << endl;
	ite = find(ilist.begin(), ilist.end(), 1); //查找1
	if (ite != ilist.end())
		cout << *(ilist.erase(ite)) << endl;   //删除1,返回指向2的指针
	for (ite = ilist.begin(); ite != ilist.end(); ++ite)
		cout << *ite << " ";
	cout << endl;

	cout << "----------" << endl;
	int iv[5] = { 5, 6, 7, 8, 9 };
	list<int> ilist2(iv, iv + 5);
	ite = find(ilist.begin(), ilist.end(), 99); //查找99的位置
	ilist.splice(ite, ilist2);  //在99位置插入ilist2-->变成0 2 5 6 7 8 9 99 3 4
	ilist.reverse();  //逆置 将ilist整个逆置过来
	ilist.sort();  //从小到大进行排序
	for (ite = ilist.begin(); ite != ilist.end(); ++ite)
		cout << *ite << " ";
	cout << endl;
	system("pause");
	return 0;
}

Unique分析:

template<class T,class Alloc>
void list<T, Alloc>::unique()
{
	iterator first = begin();  //first指向开始
	iterator last = end();     //last指向结尾
	if (first == last)        //循环链表,如果相等就为空
		return;
	iterator next = first;     //next同样指向起始位置
	while (++next != last)     //1.先++next,指向下一个位置 
	{
		if (*first == *next)  //2.如果相等就删除,next同样还会指向first
			erase(next);
		else
		{//如果不等,那么first=next,会使first指向下一个位置,因为next在之前++,已经指向下一个位置。
			first = next;
		}
		//不管两个值是否相同,两个同时指向同一个数据,下一次继续先++next
		next = first;           
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值