我只是在尝试更多地了解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];

最佳答案

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

如果rvec本身和rvec中的每个 vector 都已经具有正确的大小,则不需要调整大小。

关于c++ - 将复制与多维数组一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1075614/

10-11 16:30