用STD::排序C++中的链表
我已经对数组使用了std::sort,现在我想对链表使用它用STD::排序C++中的链表,c++,sorting,C++,Sorting,我已经对数组使用了std::sort,现在我想对链表使用它 我可以对链表使用std::sort吗。如果可以,我如何使用它。您不能,因为std::sort需要随机访问迭代器,而std::list只提供双向迭代器。改为使用。您不能使用标准算法std::sort with container std::list,因为该算法使用随机访问迭代器,而container std::list只有一个双向迭代器 但是,std::list和std::forward_list有自己的排序方法 void sort();
我可以对链表使用std::sort吗。如果可以,我如何使用它。您不能,因为std::sort需要随机访问迭代器,而std::list只提供双向迭代器。改为使用。您不能使用标准算法std::sort with container std::list,因为该算法使用随机访问迭代器,而container std::list只有一个双向迭代器 但是,std::list和std::forward_list有自己的排序方法
void sort();
template <class Compare> void sort(Compare comp);
#include <iostream>
#include <list>
#include <cstdlib>
#include <ctime>
#include <algorithm>
int main()
{
const size_t N = 10;
std::list<int> l( N );
std::srand( ( unsigned )std::time( 0 ) );
std::generate( l.begin(), l.end(), []{ return std::rand() % N; } );
for ( int x : l ) std::cout << x <<' ';
std::cout << std::endl;
l.sort();
for ( int x : l ) std::cout << x <<' ';
std::cout << std::endl;
return 0;
}
3 6 7 5 3 5 6 2 9 1
1 2 3 3 5 5 6 6 7 9