C++ c++;多值数组赋值

C++ c++;多值数组赋值,c++,arrays,programming-languages,syntax,C++,Arrays,Programming Languages,Syntax,因此,在初始化数组时,可以在一个位置为其指定多个值: int array [] = {1,3,34,5,6} 但是,如果数组已经初始化,我想在一行中完全替换该数组中元素的值,该怎么办 所以 似乎不起作用 有办法吗?您必须一个接一个地替换值,例如在for循环中,或者在另一个数组上复制另一个数组,例如使用memcpy(…)或std::copy e、 g for(int i=0;i

因此,在初始化数组时,可以在一个位置为其指定多个值:

int array [] = {1,3,34,5,6}
但是,如果数组已经初始化,我想在一行中完全替换该数组中元素的值,该怎么办

所以

似乎不起作用


有办法吗?

您必须一个接一个地替换值,例如在for循环中,或者在另一个数组上复制另一个数组,例如使用
memcpy(…)
std::copy

e、 g

for(int i=0;i

注意确保正确的边界检查和任何其他需要进行的检查,以防止出现越界问题。

您必须逐个替换值,例如在for循环中,或者使用
memcpy(…)
std::copy

e、 g

for(int i=0;i

注意确保正确的边界检查以及防止越界问题所需的任何其他检查。

初始化与分配之间存在差异。您要做的不是初始化,而是分配。但在C++中,数组的分配是不可能的。 以下是您可以做的:

#include <algorithm>

int array [] = {1,3,34,5,6};
int newarr [] = {34,2,4,5,6};
std::copy(newarr, newarr + 5, array);
#包括
int数组[]={1,3,34,5,6};
int newarr[]={34,2,4,5,6};
std::复制(newarr,newarr+5,数组);

但是,在C++0x中,可以执行以下操作:

std::vector<int> array = {1,3,34,5,6};
array = {34,2,4,5,6};
std::vector array={1,3,34,5,6};
数组={34,2,4,5,6};

当然,如果您选择使用
std::vector
而不是原始数组。

初始化赋值之间存在差异。您要做的不是初始化,而是分配。但在C++中,数组的分配是不可能的。
const static int newvals[] = {34,2,4,5,6};

std::copy(newvals, newvals+sizeof(newvals)/sizeof(newvals[0]), array);
以下是您可以做的:

#include <algorithm>

int array [] = {1,3,34,5,6};
int newarr [] = {34,2,4,5,6};
std::copy(newarr, newarr + 5, array);
#包括
int数组[]={1,3,34,5,6};
int newarr[]={34,2,4,5,6};
std::复制(newarr,newarr+5,数组);

但是,在C++0x中,可以执行以下操作:

std::vector<int> array = {1,3,34,5,6};
array = {34,2,4,5,6};
std::vector array={1,3,34,5,6};
数组={34,2,4,5,6};

当然,如果您选择使用
std::vector
而不是原始数组。

std::copy(std::begin(newarr)、std::end(newarr)、std::begin(array))会更好,不是吗?@MattCruikshank:是的。但是这在C++03中是不可能的。当它的大小固定时,最好使用
std::array
而不是
std::vector
。我正在寻找有关此规则的标准指针。你知道它在哪里吗?
std::copy(std::begin(newarr)、std::end(newarr)、std::begin(array))会更好,不是吗?@MattCruikshank:是的。但是这在C++03中是不可能的。当它的大小固定时,最好使用
std::array
而不是
std::vector
。我正在寻找有关此规则的标准指针。你知道它在哪里吗?
const static int newvals[] = {34,2,4,5,6};

std::copy(newvals, newvals+sizeof(newvals)/sizeof(newvals[0]), array);