gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:10:14 26 4
gpt4 key购买 nike

假设我有以下场景:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com