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