如何解决反转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循环从前到后打印出列表,第二个循环从后到前打印。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。