【发布时间】:2012-01-26 17:41:42
【问题描述】:
我有一个包含复制成本高昂的大型对象的容器。我有时必须正常迭代整个容器,有时反过来。一旦确定了迭代方向,我就不需要在飞行中更改,即不需要随机访问。
我希望做这样的事情:
#include <iostream>
#include <vector>
using namespace std;
int main( int argc, char** )
{
// pretend this is a vector of expensive objects
vector<int> foo = {1,2,3,4,5};
// calculate forward or backward iteration direction
bool backwards = (argc > 1);
if( backwards )
// prepare backward iteration, but don't copy objects
else
// prepare forward iteration, but don't copy objects
for( auto& i : /* either forward or backward */ )
{
// my loop body
cout << i;
}
return 0;
}
这是一个 C++11 程序,但我认为这对我没有帮助。我只是没有看到最好的方法来做到这一点。感谢您的帮助。
【问题讨论】: