《C++primer》笔记:特定容器算法

目录

splice成员

链表特有的操作会改变容器


与其他容器不同,链表类型list和forward_list定义了几个成员函数形式的算法,如下表所示

 

 

特别是,它们定义了独有的sort,merge,remove,reverse和unique。通用版本的sort要求随机访问迭代器(不懂可见《c++primer》学习笔记:泛型算法结构_lsgoose的博客-CSDN博客),因此 不能用于list和forward_list,因为这两个类型分别提供双向迭代器和前向迭代器。

链表类型定义的其他算法的通用版本可以用于链表,但代价太高。这些算法需要狡猾输入序列中的元素。一个链表可以通过改变元素间的链接而不是真正交换它们的值来快速交换元素。因此,这些链表版本的算法的性能比对应的通用版本好得多。

splice成员

链表类型还定义了splice算法,其描述见下标,此算法是链表数据结构所特有的,因此不需要通用版本

链表特有的操作会改变容器

链表特有版本和通用版本间的一个至关重要的区别是链表版本会改变底层的容器。例如,remove的链表版本会删除指定的元素,unique的链表版本会删除第二个和后继的重复元素。

类似的,merge和splice会销毁其参数。例如,通用版本的merge将合并的序列写道一个给定的目的迭代器,两个输入序列是不变的。而链表版本的函数会销毁给定的链表——元素从参数指定的链表中删除,被合并到调用merge的链表对象中。在merge之后,来自两个链表中的元素依然存在,但它们都已在同一个链表中。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值