如何从最后打印双端队列?

How to print a deque from the end?

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

通常的for(int i(deque.size()); i > 0; i--) 循环显然行不通。 程序简介。它找到总和为偶数或奇数的数字,并将它们分类到要打印在屏幕上的两个不同的双端队列中。 这是适用于 'usual' 打印的代码。但我的任务是向后打印它们。 哦,使用 push_front 函数将元素添加到双端队列。不,我不允许使用 push_back 到 'fix' 它。

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

如果你们中的一些人觉得需要整个程序的代码,我会编辑我的 post。

您可以使用 reverse iterators. See http://en.cppreference.com/w/cpp/container/deque/rbegin.

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

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