反转std :: list的内容

|
class Print 
   {  
   public:
       void PrintAll() {}
   private:
    std::list<int> mylist;
   };
我从C ++语言书中看到了这个示例问题。 我想打印内部的mylist元素。 如果需要反转mylist,使用C ++ STL库并用于输出结果,该怎么办。 非常感谢你!     
已邀请:
std::list<>::reverse()
? 就是说,如果只需要反向打印ѭ2,则可以简单地使用
list
的反向迭代器(由
std::list<>::rbegin()
std::list<>::rend()
获得)打印,而不是使用
list
\的普通迭代器。例如。:
// given std::list<int> l;
for (std::list<int>::const_reverse_iterator iter(l.rbegin()), iter_end(l.rend());
        iter != iter_end;
        ++iter)
{
    std::cout << *iter << \'\\n\';
}
    
您可以在列表上使用
reverse()
方法。
mylist.reverse();
将反转列表的内容,然后您可以使用迭代器将其打印出来。
list<int>::iterator it;
cout << \"mylist contains:\";
for (it=mylist.begin(); it!=mylist.end(); ++it)
    cout << \" \" << *it;
您可以将所有功能包装在您自己的成员函数中。     
您还可以使用容器提供的反向迭代器,例如l.rbegin()和l.rend(),它将向后迭代列表。     
list :: reverse的代码示例
// list_reverse.cpp
// compile with: /EHsc
#include <list>
#include <iostream>

int main( ) 
{
   using namespace std;
   list <int> c1;
   list <int>::iterator c1_Iter;

   c1.push_back( 10 );
   c1.push_back( 20 );
   c1.push_back( 30 );

   cout << \"c1 =\";
   for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
      cout << \" \" << *c1_Iter;
   cout << endl;

   c1.reverse( );
   cout << \"Reversed c1 =\";
   for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
      cout << \" \" << *c1_Iter;
   cout << endl;
}
输出将是 c1 = 10 20 30 反转c1 = 30 20 10     
迭代器仅指向列表中的当前元素。因此,如果我们编写一个从头到尾的for循环,则可以反向打印列表。在下面给出的代码中:
    #include <iostream>
    #include <list>

    using namespace std;

    int main()
    {
       std::list<int> ii;
       ii.push_back(1);
       ii.push_back(2);
       ii.push_back(3);
       ii.push_back(4);
       ii.push_back(5);
       for (std::list<int>::iterator it = (ii.begin()); it != (ii.end()) ; ++it)
       {
           cout << (*it) << \" \";
       }
       cout << endl;
       for (std::list<int>::iterator it = (--ii.end()); it != (--ii.begin()) ; it--)
       {
           cout << (*it) << \" \";
       }
       return 0;
    }
第一个for循环从前到后打印出列表,第二个循环从后到前打印。     

要回复问题请先登录注册