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