使用具有多维数组的副本

And*_*ock 1 c++ stl

我只是想更多地学习stl语义,并在适当的时候将旧循环转换为算法.我无法找到将此循环转换为复制调用的最佳方法.有任何想法吗?

    vector< vector<float> > rvec;
    const float * r[Max] = ...;

    // ...

    for (int ri=0; ri<N; ri++)
      for (int rj=0; rj<M; rj++)
        rvec[ri][rj] = r[ri][rj];
Run Code Online (Sandbox Code Playgroud)

小智 7

rvec.resize(Max);
for (int i = 0; i < Max; ++i) {
  rvec[i].resize(M);
  std::copy(r[i], r[i] + M, rvec[i].begin());
}
Run Code Online (Sandbox Code Playgroud)

如果rvec自身和每个向量rvec已经具有正确的大小,则不需要调整大小.