反转 std::list 的内容
class Print
{
public:
void PrintAll() {}
private:
std::list<int> mylist;
};
我从一本 C++ 语言书中看到了这个示例问题。 我想打印内部 mylist 元素。 如果mylist需要反转怎么办,使用C++ STL库并使用输出结果。
非常感谢你!
class Print
{
public:
void PrintAll() {}
private:
std::list<int> mylist;
};
I see this example question from a C++ language book.
And I want to print the internal mylist elements.
How can it be done if mylist needs to be reversed, using C++ STL library and using to output the result.
Thanks you very much!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
std::list<>::reverse()
?也就是说,如果您只需要反向打印
list
,则可以使用list
的反向迭代器(通过 < a href="http://en.cppreference.com/w/cpp/container/list/rbegin" rel="nofollow">std::list>>::rbegin()
< /a> 和std::list>>::rend()
),而不是使用list
的普通迭代器。例如:std::list<>::reverse()
?That said, if you only need to print the
list
in reverse, you can simply print it usinglist
's reverse iterators (obtained bystd::list<>::rbegin()
andstd::list<>::rend()
) rather than by usinglist
's normal iterators. E.g.:您可以在列表中使用
reverse()
方法。将反转列表的内容,然后您可以使用迭代器打印相同的内容。
您可以将所有功能包装在您自己的成员函数中。
You can use the
reverse()
method on your list.will reverse the contents of your list and then you can print the same, using iterators.
You can wrap all the functionality up in your own member function.
您还可以使用容器提供的反向迭代器,例如lrbegin() 和l.rend(),这将向后迭代列表。
You can also use reverse iterators provided by the container e.g. l.rbegin() and l.rend() and that will iterate through the list backwards.
list::reverse 的代码示例
输出将为
c1 = 10 20 30
反转 c1 = 30 20 10
Code example for list::reverse
And the output will be
c1 = 10 20 30
Reversed c1 = 30 20 10
迭代器只是指向列表中的当前元素。因此,如果我们编写一个从头到尾的 for 循环,我们就可以反向打印列表。在下面给出的代码中:
第一个 for 循环从前到后打印列表,而第二个 for 循环从后到前打印。
iterator simply point to the current element in the list. So, if we write a for loop going from end to beginning, we can print the list in reverse. in the code given below:
The first for loop prints out the list from front to back while the second one prints from back to front.