c++最快的循环扫描3D vector

标签 c++ performance for-loop stdvector

我想知道对 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/

相关文章:

java - Java中Arraylist的交集性能(时间和空间)

java - 在另一个线程上有益地执行一件工作的最小尺寸?

c - 需要一个答案和一些解释

javascript - angular - 对数组长度时间进行 HTTP 请求并对数组进行 concat 响应

c - 将 for 循环中的值存储到数组中

javascript - 如何链接使用 emcc 从 cpp 文件编译的 .bc 文件和项目符号库?

c# - 如何使用 protobuf-net 读取 fixed32 整数?

c++ - 在 C++ 中执行 windows 命令并将输出重定向到本地字符串

c++ - 如何通过 Windows API 获取文件夹大小

android - 改造通用响应处理程序