在c++中将一个数组复制到另一个数组

Copying an array into another array in C++

本文关键字:数组 一个 复制 另一个 c++      更新时间:2023-10-16

我创建了一个像这样的数组:

std::vector<int> data(n);

我有另一个数组b (c array b[])有n个int值。我想把这些值放入data:

for (int i =0 ; i<n, i++) {
    data[i] = b[i]; 
}  
在c++中是否有其他方法可以将一个数组复制到另一个数组中?

从你的问题中不完全清楚,但如果bdata都是std::vector<int>,那么你可以做五件相关的事情:

b初始化一个新的data

std::vector<int> data = b; // copy constructor

b初始化一个新的data

std::vector<int> data(begin(b), begin(b) + n); // range constructor

b完全复制到现有的data中(覆盖当前的data值)

data = b; // assignment

复制 b的第一个n元素到现有的data(覆盖当前的data值)

data.assign(begin(b), begin(b) + n); // range assignment

b的第一个n元素追加到已存在的data

data.insert(end(a), begin(b), begin(b) + n); // range insertion

如果b恰好有n个元素,你也可以用end(b)代替begin(b) + n。如果b是c风格的数组,则可以执行using std::begin;using std::end,并且范围构造/赋值/插入将继续工作。

如果bint[](即C数组),那么您可以:

std::vector<int> data(b + 0, b + n);

如果b也是std::vector,那么你可以这样做:

std::vector<int> data = b;

您可以使用copy(但要确保目标向量中有足够的元素!)

copy(begin(b), end(b), begin(data))

std::vector<int> data(b, b + n);

相关文章: