其他分享
首页 > 其他分享> > c在3D矢量上的最快循环扫描

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