如何从最后打印双端队列?
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--)
.
问题很简单,我如何从后面打印双端队列。示例:我有一个包含元素 {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--)
.