【c++】 list容器(二)

上见【c++】 list容器 (一)-CSDN博客

一、list插入与删除

1.头尾之间的插入或删除

尾插 push_back       尾删 pop_back    头插 push_front     头删 pop_front

L.push_back(10);
L.push_back(20);
L.push_back(30);

L.push_front(1);
L.push_front(2);
L.push_front(3);
print(L);  

L.pop_back();
L.pop_front();

 2.insert 插入

L.insert(L.begin(), 1000);  //相当于头插

我们还可以选择位置  (通过改变迭代器的位置)

list <int>::iterator it = L.begin();
L.insert(++it, 100);

3.erase 删除

	it = L.begin();
	L.erase(++it);

4.remove 移除

这个是 list 与其他容器不同的一点


	L.push_back(1000);
	//直接删除所有1000的数据
	L.remove(1000);

remove删除1000是 删除一个1000 还是删除所有的1000呢?

通过实践发现是删除所有是1000的数据

二、数据存取

list 不支持通过 [ ] 或者直接用at访问 

因为list本身是链表,非连续的空间,只能前移或者后移,不能跳跃式的访问

 1.front ()  返回第一个元素

cout << "第一个元素是:" << L.front () << endl;

2.back() 返回最后一个元素

cout << "最后一个元素是:" << L.back() << endl;

三、反转和排序

1.reverse 反转

   reverse () 反转链表

L.reverse();

2.swap 排序 (升序和降序)

L.sort();

!!!:注意不能用: sort (  L.begin( ) , L.end( ) ) 

所有不支持随机访问迭代器的容器,不可以使用标准算法的函数

上面是实现升序排列的方法,那我们该如何实现降序排列呢?

我们可以先写一个bool类型的函数

bool compare(int v1, int v2)
{
	//降序  就让返回值大于零
	return v1 >v2;
}

 再把compare这个函数名放到sort算法里面

L.sort(compare);

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值