问题很简单,如何打印双端队列,但是从后面开始。示例:我有一个元素为{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 << ",";
}
}
如果有些人觉得需要整个程序的代码,我会编辑我的帖子。
答案 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--)
。