【问题标题】:sort linked list in C++ by using std::sort [duplicate]使用 std::sort 在 C++ 中对链表进行排序 [重复]
【发布时间】:2023-03-28 00:04:01
【问题描述】:

我已经将 std::sort 用于数组,现在我想将它用于链表 我可以将 std::sort 用于链表吗?如果可以的话,我该怎么用呢。

【问题讨论】:

    标签: c++ sorting


    【解决方案1】:

    你不能,因为std::sort 需要随机访问迭代器,而std::list 只提供双向迭代器。请改用std::list::sort

    【讨论】:

      【解决方案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 
      

      【讨论】:

        猜你喜欢
        • 2011-08-19
        • 2012-05-26
        • 1970-01-01
        • 2012-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多