std::
forward_list::sort
公众成员函数 <forward_list>
(1) |
void sort(); |
2) |
template <class Compare>
void sort (Compare comp); |
对容器中的元素进行排序
对forward_list中的元素进行排序,改变它们在容器中的位置。
排序是通过应用 operator< (version(1))或comp (version(2))来比较元素来执行的。
这种比较将产生元素的严格弱排序(即,不考虑自反性的一致传递比较)。
排序结果中相等元素的顺序是稳定的: 即,相等元素保持它们在调用之前的相对顺序。
整个操作不涉及任何元素对象的构造、销毁或复制。元素在容器内移动。
☲ 参数
-
comp
-
二元谓词,接受与forward_list中包含的值相同类型的两个值.
如果第一个参数按照它定义的严格弱顺序被认为在第二个参数之前,
则返回true,否则返回false。
这应该是一个函数指针或函数对象。
☉ 返回值
none
☣ 示例
// forward_list::sort
#include <iostream>
#include <forward_list>
#include <functional>
int main ()
{
std::forward_list<int> mylist = {22, 13, 5, 40, 90, 62, 31};
mylist.sort();
std::cout << "default sort (operator<):";
for (int& x: mylist) std::cout << ' ' << x;
std::cout << '\n';
mylist.sort(std::greater<int>());
std::cout << "sort with std::greater():";
for (int& x: mylist) std::cout << ' ' << x;
std::cout << '\n';
return 0;
} |
输出:
default sort (operator<): 5 13 22 31 40 62 90
sort with std::greater(): 90 62 40 31 22 13 5
✥ 复杂度
近似为NlogN,其中N是容器的大小。
☣ 迭代器的有效性
不变
⇄ 数据竞争
容器被修改.
访问所有包含的元素(但不修改)。同时遍历容器是不安全的。
☂ 异常安全性
基本保证:如果抛出异常,则容器处于有效状态。
如果任何元素的比较或移动操作抛出,则抛出。
🍄 另请参阅
forward_list::merge |
合并已排序的容器(公众成员函数) |
forward_list::reverse |
颠倒元素的顺序(公众成员函数) |
forward_list::unique |
删除重复的值(公众成员函数) |