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);