【问题标题】:c++ std:: algorithms with reverse order (end, beg)c++ std:: 倒序算法 (end, beg)
【发布时间】:2021-06-03 22:13:35
【问题描述】:

我想在向量上使用std::copy,但以相反的顺序复制元素。由于vector::begin() 返回一个随机访问迭代器,这似乎是可行的。

当然,我可以在前后使用std::reverse,但这会效率低下。

【问题讨论】:

  • std::vectorrbeginrend

标签: c++ algorithm c++11 vector iterator


【解决方案1】:

STL 有一个std::reverse_copy 函数模板,其工作方式与std::copy 完全相同,但反向复制。

【讨论】:

    【解决方案2】:

    类模板std::vector 提供反向迭代器。因此,您可以使用rbeginrend,而不是成员函数或独立函数beginend

    这是一个演示程序。

    #include <iostream>
    #include <vector>
    #include <iterator>
    #include <algorithm>
    
    int main() 
    {
        std::vector<int> v = { 1, 2, 3, 4, 5 };
        
        std::copy( std::rbegin( v ), std::rend( v ), 
                   std::ostream_iterator<int>( std::cout, " " ) );
        std::cout << '\n';
        
        return 0;
    }
    

    程序输出是

    5 4 3 2 1
    

    【讨论】:

      猜你喜欢
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 2014-05-18
      • 1970-01-01
      • 2012-04-08
      相关资源
      最近更新 更多