C++ STL篇之 list容器 list的一些基本操作

头文件:#include<list>

链表的定义:

list<type>lst

list<type>lst(size)

list<type>lst(size,num)

list<type>lst(lst2)//拷贝lst2到lst中

list<type>lst(lst2.begin(),lst.end())//效果同第四种

 实例:

    list<int>l1;
	list<int>l2(5);
	list<int>l3(10, 5);
	list<int>l4(l3);
	list<int>l5(l3.begin(), l3.end());

链表的基本操作:

list<type>lst;

判断链表是否为空:lst.empty();

头插:lst.push_front(val);

头删:lst.pop_front();

尾插:lst.push_back(val);

尾删:lst.pop_back();

得到第一个元素:lst.front();

得到最后一个元素:lst.back();

插入元素:lst.insert(pos,val);

插入几个元素:lst.insert(pos,num,val);

删除元素:lst.erase(pos);//不能删除指定区间的元素

排序:lst.sort();//默认升序

翻转链表:lst.reverse();//1235变54321

遍历整个链表:

for(list<type>::iterator it=lst.begin();it!=lst.end();it++)
{
       cout<<*it<<endl;
}

清空链表:lst.clear();

重新设置链表:lst.assign(num,val);

删除链表内的重复元素:lst.uniqe();

删除链表内的某个元素(所有):lst.remove(num);

删除某个符合条件的元素;lst.remove_if(函数指针/函数名);

实例:

list<int>lst;
	if (lst.empty())
	{
		cout << "empty" << endl;
	}
	else
	{
		cout << "not empty" << endl;
	}
	lst.push_front(100);
	lst.pop_front();
	lst.push_back(99);
	lst.pop_back();
	for (int i = 1; i <= 10; i++)
	{
		lst.push_back(i);
	}
	cout << lst.front() << endl;
	cout << lst.back() << endl;
	lst.insert(lst.begin(), 88);
	lst.insert(lst.begin(), 5, 88);
	list<int>k(5, 77);
	lst.insert(lst.begin(), k.begin(), k.end());
	lst.erase(lst.begin());
	lst.sort();
	lst.reverse();
	list<int>::iterator it = lst.begin();
	for (it = lst.begin(); it != lst.end(); it++)
	{
		cout << *it << ' ';
	}
	cout << endl;
	lst.clear();
	lst.assign(8, 1);
	lst.unique();
	lst.assign(8, 1);
	lst.remove(1);
	for (int i = 1; i <= 10; i++)
	{
		lst.push_back(i);
	}
	lst.remove_if(check);

链表的迭代器只能++,不能+整型,不然会报错

(猜测应该是链表的特性决定的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

喜欢乙醇的四氯化碳

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

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

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

打赏作者

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

抵扣说明:

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

余额充值