我已经使用了std :: sort for array,现在我想将它用于链表 我可以使用std :: sort作为链表。如果它能够,我该如何使用它。
答案 0 :(得分:6)
你不能,因为std::sort
需要随机访问迭代器,而std::list
只提供双向迭代器。请改用std::list::sort
。
答案 1 :(得分:2)
您不能对容器std::sort
使用标准算法std::list
,因为算法使用random access iterators
而容器std::list
只有bidirectional iterator
。
但是std::list
(和std::forward_list
)有自己的方法sort
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