Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用STD::排序C++中的链表_C++_Sorting - Fatal编程技术网

用STD::排序C++中的链表

用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::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