我想知道对 3D vector 的每个元素执行方法的最快方法是什么。
假设我们有:
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++最快的循环扫描3D vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12710138/