type
status
date
slug
summary
tags
category
icon
password
Property
与别的容器不同的是,
list
和 forward_list
将几个算法定义为自己的成员。如:链表类型定义自己的 sort
,merge
,remove
,reverse
和 unique
版本。通用的 sort
算法需要随机访问迭代器。因而,sort
不能被用于 list
和 forward_list
,原因是它们分别只提供双向迭代器和前向迭代器。其它一些通用算法可用于链表类型,但是会损失性能。这些算法交换输入序列中的元素。链表可以通过交换链接来达到目的,而不是交换元素的值。因而,链表特定的版本会比通用版本有一个更好的性能。
以下是链表特定的算法,没有出现在下面的算法在链表和别的容器类型上表现一样好:
以上操作返回
void
,对于 list
和 forward_list
有限使用成员版本而不是通用算法版本。splice 成员
链表类型还定义了
splice
(拼接) 算法,这是链表特有的算法链表特有的算法类似于其通用算法版本。然而一个重大的区别就是链表版本会改变其底层容器。如链表版本的
remove
会真的执行移除操作,链表版本的 unique
会移除第二个及之后的重复元素。同样的
merge
和 splice
会改变其参数,而通用版本的 merge
将内容写入到给定的目的迭代器中;两个输入序列表示不变。链表 merge
函数会销毁给定链表,将其元素从参数中移除合并到调用者链表上。在 merge
之后所有的元素都在同一个链表上。