如何从头开始打印双端队列?

时间:2018-03-15 00:29:07

标签: c++ c++11 deque

问题很简单,如何打印双端队列,但是从后面开始。示例:我有一个元素为{5,4,3,2,1}的双端队列。我想要打印那个双端队列,但是从最后一个元素开始,所以我应该在屏幕上有一些像1 2 3 4 5。

通常for(int i(deque.size()); i > 0; i--)循环显然不会起作用。 该计划的一点介绍。它找到偶数或奇数的数字,并将它们分类为两个不同的deques,这些deques将在屏幕上打印。 这是适用于'通常'打印。但我的任务是向后打印它们。 哦,使用push_front函数将元素添加到双端队列中。不,我不允许使用push_back来修复'它

void PrintDek(Dek v4) {
for (int i(0); i < v4.size(); i++) {
    std::cout << v4[i];
    if (i != v4.size() - 1) std::cout << ",";
}
}

如果有些人觉得需要整个程序的代码,我会编辑我的帖子。

2 个答案:

答案 0 :(得分:4)

您可以使用reverse iterators。请参阅http://en.cppreference.com/w/cpp/container/deque/rbegin

for(auto iter = deque.rbegin(); iter != deque.rend(); ++iter) {
    // do stuff
}

答案 1 :(得分:2)

所以在经过几个小时的睡眠后看到我的代码(根据我的时区在凌晨2点之后发布了这个问题),我已经意识到我的错误是什么。通过使用deque.size()并一直向上移动到size()函数返回的值,我实际上超出了范围,访问了禁止的内存部分。 简单deque.size()-1现在有效。所以循环看起来像for(int i(deque.size()-1); i >= 0; i--)