我有一个包含大量昂贵的对象的容器,复制起来很费劲。我有时需要按照正常顺序遍历整个容器,有时需要反向遍历。一旦确定了遍历方向,就不需要在中途更改,即不需要随机访问。
我希望实现这样的模式:
我希望实现这样的模式:
#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程序,但我不认为这真的能在这里帮助我。我只是没有看到最好的方法来做这件事。谢谢你的帮助。