class Print
{
public:
void PrintAll() {}
private:
std::list<int> mylist;
};
我从C ++语言书中看到了这个示例问题。 我想打印内部的mylist元素。 如果需要反转mylist,使用C ++ STL库并使用输出结果,怎么办呢。
非常感谢你!
答案 0 :(得分:12)
那就是说,如果你只需要反向打印 list
,你可以使用list
的反向迭代器(由{{3}获得)来打印它。 }和std::list<>::rbegin()
)而不是使用list
的普通迭代器。 E.g:
// 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';
}
答案 1 :(得分:3)
您可以在列表中使用reverse()
方法。
mylist.reverse();
将反转列表中的内容,然后使用迭代器打印相同内容。
list<int>::iterator it;
cout << "mylist contains:";
for (it=mylist.begin(); it!=mylist.end(); ++it)
cout << " " << *it;
您可以在自己的成员函数中包含所有功能。
答案 2 :(得分:0)
您还可以使用容器提供的反向迭代器,例如l.rbegin()和l.rend(),它将向后遍历列表。
答案 3 :(得分:0)
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
答案 4 :(得分:0)
迭代器只是指向列表中的当前元素。因此,如果我们编写一个从头到尾的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循环从前到后打印出列表,而第二个从后到前打印。