c++ - 复制二维 vector 的最佳方法是什么

标签 c++ vector copy multidimensional-array

假设我有以下场景:

std::vector<std::vector<double>> v(6, std::vector<double>(6, 0.0));
std::vector<std::vector<double>> y;

for (const std::vector<double> &p : v) {
    y.push_back(p);
}

这是将 v 的深度复制到 y 中。有没有办法在 2D vector 上使用 std::copy 执行此操作。

std::copy(v.begin(), v.end(), y.begin())

将不起作用。对于奖励积分,这可以扩展到 ND vector 案例吗?这似乎很重要,可以避免以下 N 深度的循环:

...
for (const std::vector<std::vector<<double>> &p : v) {
    for (const std::vector<double> &q : p) {
        ...

我知道在性能方面没有区别,因为这是 std::copy 的实现方式。只是想知道代码紧凑性。

最佳答案

将 STL 容器复制到另一个容器的最佳做法是:copy construct。代码应该更快并且异常安全。

例如:

auto y(v);

如果 y 已经创建,使用 vector::insert

y.insert(y.end(), v.begin(), v.end());

y = v;

关于c++ - 复制二维 vector 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25026958/

相关文章:

c++ - 位操作 十六进制 C++

c++ - 缺少 cmake 的 sfml 库

python - 获取从索引到结束的数组元素

filter - 使用 Gradle 复制文件时如何跳过空行?

c++ - 使用 const 引用为变量添加别名

c++ - C++ 中的 i++ 和++i 之间有性能差异吗?

c++ - 如何访问由 std::vector 分配的内存块?

c++ - 将 vector 读/写到文件的有效方法

javascript - 如何复制按钮文本?

json - json。在Go中解码TCP连接并同时记录原始数据