gpt4 book ai didi

c++ - 如何将一个 vector block 复制到另一个

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:26 25 4
gpt4 key购买 nike

我用数组来存储数据,但我用 vector 代替了,所以我想用 C++ 运算符替换所有的 C 运算符。我用memcpy复制了一个内存块

for (i = 0; i < rows_; i++)
memcpy((T *) &tmp.data_[cols_ * i], (T *) &a.data_[cols_ * (2 * i + 1)], rows_ * sizeof(T));

它也适用于 vector ,我只想知道 c++ 中是否有等效的函数?

我尝试了拷贝:

std::copy(tmp.data_[cols_ * i], tmp.data_[cols_ * i+rows], a.data_[cols_ * (2 * i + 1)]);

但我收到以下错误:

error: invalid use of member function (did you forget the ‘()’ ?)

例如:

我有一个 2xnxn 大小的数组,我正在使用 for 循环来创建一个 nxn 数组。例如我有 1 2 3 4 5 6 7 8,我的新数组必须是:3 4 7 8。我用 memcpy 来实现这个,但我不知道如何在 c++ 中实现

最佳答案

有一个标准算法copy .它比 memcpy 更安全,因为它也适用于非 POD 类型。有时会针对 POD 类型进行优化以生成 memcpy。您通常不使用标准算法的指针,但您必须使用迭代器。要获得迭代器,您可以使用 begin()end() 方法或自由函数。示例:

vector<int> a(10, 5);
vector<int> b(5);

copy(a.begin(), a.begin()+5, b.begin());

关于c++ - 如何将一个 vector block 复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13560431/

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