在c++中将一个数组复制到另一个数组
Copying an array into another array in C++
我创建了一个像这样的数组:
std::vector<int> data(n);
我有另一个数组b
(c array b[])有n个int值。我想把这些值放入data
:
for (int i =0 ; i<n, i++) {
data[i] = b[i];
}
在c++中是否有其他方法可以将一个数组复制到另一个数组中? 从你的问题中不完全清楚,但如果b
和data
都是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
,并且范围构造/赋值/插入将继续工作。
如果b
是int[]
(即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);