C++ 排序和排序容器
示例
std::sort在标准库标头中找到的algorithm,是一种标准库算法,用于对由一对迭代器定义的值范围进行排序。std::sort将用于比较两个值的函子作为最后一个参数;这就是确定顺序的方式。注意std::sort不稳定。
比较功能必须在元素上施加严格的弱排序。一个简单的小于(或大于)比较就足够了。
可以使用以下std::sort算法对具有随机访问迭代器的容器进行排序:
C ++ 11#include <vector>#include <algorithm>
std::vector<int> MyVector = {3, 1, 2}
//Default comparison of <
std::sort(MyVector.begin(), MyVector.end());
std::sort要求其迭代器是随机访问迭代器。序列容器std::list和std::forward_list(需要C ++ 11)不提供随机访问迭代器,因此不能与一起使用std::sort。但是,它们确实具有sort实现与自己的迭代器类型一起使用的排序算法的成员函数。
C ++ 11#include <list>#include <algorithm>
std::list<int> MyList = {3, 1, 2}
//Default comparison of <
//仅整个列表。
MyList.sort();
它们的成员sort函数始终对整个列表进行排序,因此无法对元素的子范围进行排序。但是,由于list并且forward_list具有快速的拼接操作,因此您可以从列表中提取要排序的元素,对它们进行排序,然后将其填充回它们非常有效的位置,如下所示:
void sort_sublist(std::list<int>& mylist, std::list<int>::const_iterator start, std::list<int>::const_iterator end) {//提取并排序由开始和结束迭代器表示的半开子范围
std::list<int> tmp;
tmp.splice(tmp.begin(), list, start, end);
tmp.sort();
//在我们从中提取范围的位置重新插入范围
list.splice(end, tmp);
}
以上是 C++ 排序和排序容器 的全部内容, 来源链接: utcz.com/z/326202.html