的数组赋值,所以当你初始化数组,你可以在一个地方分配多个值给它:C++多个值
int array [] = {1,3,34,5,6}
但如果阵列已经初始化,我想完全替代值该数组中的元素在一行中的
所以
int array [] = {1,3,34,5,6}
array [] = {34,2,4,5,6}
似乎不工作...
有没有办法做到这一点?
的数组赋值,所以当你初始化数组,你可以在一个地方分配多个值给它:C++多个值
int array [] = {1,3,34,5,6}
但如果阵列已经初始化,我想完全替代值该数组中的元素在一行中的
所以
int array [] = {1,3,34,5,6}
array [] = {34,2,4,5,6}
似乎不工作...
有没有办法做到这一点?
初始化和赋值之间存在差异。你想要做的不是初始化,而是分配。但是在C++中这样的数组赋值是不可能的。
这里是你可以做什么:
#include <algorithm>
int array [] = {1,3,34,5,6};
int newarr [] = {34,2,4,5,6};
std::copy(newarr, newarr + 5, array);
然而,在C++ 0x中,你可以这样做:
std::vector<int> array = {1,3,34,5,6};
array = {34,2,4,5,6};
当然,如果你选择使用std::vector
而不是原始数组。
你必须通过替换值的一个一个诸如在一个for循环或复制在另一种这样的另一个阵列如使用memcpy(..)
或std::copy
例如
for (int i = 0; i < arrayLength; i++) {
array[i] = newValue[i];
}
务必小心,以确保适当的边界检查和需要发生,以防止出界的问题进行任何其他检查。
const static int newvals[] = {34,2,4,5,6};
std::copy(newvals, newvals+sizeof(newvals)/sizeof(newvals[0]), array);
链接到在线演示不起作用 – 2014-03-23 18:51:50
'标准::复制(STD ::开始(newarr)的std ::结束(newarr)的std ::开始(阵列));'会更好,不是吗? – 2015-05-12 21:01:47
@MattCruikshank:是的。但这在C++ 03中是不可能的。 – Nawaz 2015-05-13 03:19:55