c在3D矢量上的最快循环扫描
作者:互联网
我想知道在3D矢量的每个元素上执行方法的最快方法是什么.
假设我们有:
std::vector<vector<vector<CLS>>> myVec;
我想以最快的方式执行以下循环:
for(int cycle=0;cycle<10;cycle++) // do it 10 times
{
for(int i=0;i<myVec.size();i++)
{
for(int j=0;j<myVec[i][constant].size();j++)
{
foo(myVec[i][constant][j]);
}
}
}
值得一提的是,在我的案例中,中期指数总是不变的.
是否足够快地使用std :: vector或者你建议使用另一种类型的容器?
期待您的帮助.谢谢
解决方法:
迭代器的使用应该更快(在每次调用foo时都不必查看整个数组).
typedef std::vector<CLS> v1;
typedef std::vector<v1> v2;
typedef std::vector<v2> v3;
for(int cycle=0;cycle<10;cycle++) // do it 10 times
{
for(v3::const_iterator itOuter = myVec.begin(); itOuter != myVec.end(); ++itOuter)
{
const v1& vec = (*itOuter)[constant];
for(v1::const_iterator itInner = vec.begin(); itInner != vec.end(); ++itInner)
foo(*itInner);
}
}
我没有测量它(虽然甚至没有尝试编译,所以原谅任何错别字)
标签:c,performance,for-loop,stdvector 来源: https://codeday.me/bug/20190901/1785322.html