如何从最后打印一个双端



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

通常的for(int i(deque.size()); i > 0; i--)循环显然不起作用。程序介绍很少。它找到总和为偶数或奇数的数字,并将它们分类为两个不同的数字,这些数字将打印在屏幕上。这是适用于"常规"打印的代码。但我的任务是倒着打印它们。哦,元素使用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 << ",";
}
}

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

您可以使用反向迭代器。请参阅 http://en.cppreference.com/w/cpp/container/deque/rbegin。

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

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

最新更新