C++ 使用新的
有一种方法可以在数组上设置元素-C++ 使用新的,c++,arrays,c++11,c++03,C++,Arrays,C++11,C++03,有一种方法可以在数组上设置元素-intrgarraynum[]={16,2,77,40,12071} 如何使用新的指针以相同的方式进行操作?我尝试了int*pArrayNum=new[]={4,3,3}但它不起作用 在中,您可以编写: int *pArrayNum = new int[3]{4, 3, 3}; 但是,在数组中不允许新的初始化;您必须单独或通过从堆栈上的数组复制来初始化成员: int rgArrayNum [] = {16, 2, 77, 40, 12071}; int *pAr
intrgarraynum[]={16,2,77,40,12071}代码>
如何使用新的指针以相同的方式进行操作?我尝试了int*pArrayNum=new[]={4,3,3}代码>但它不起作用 在中,您可以编写:
int *pArrayNum = new int[3]{4, 3, 3};
但是,在数组中不允许新的初始化;您必须单独或通过从堆栈上的数组复制来初始化成员:
int rgArrayNum [] = {16, 2, 77, 40, 12071};
int *pArrayNum = new int[sizeof rgArrayNum / sizeof rgArrayNum[0]];
std::copy(&rgArrayNum[0], &rgArrayNum[sizeof rgArrayNum / sizeof rgArrayNum[0]],
pArrayNum);
在C++03及更早版本中,除了零之外,不能将动态数组的值初始化为任何值
您可以在C++11中实现类似的功能:
int *pArrayNum = new int [3] {4, 3, 3};
或者,如果您不介意使用容器为您管理内存:
std::vector<int> array = {4, 3, 3};
std::向量数组={4,3,3};
您必须使用整数指针而不是整数来创建数组
int* rgArrayNum2 [] = {new int(16), new int(16), new int(16), new int(16), new int(16)};
//test
int* test = rgArrayNum2[2];
*test = 15;
现在rgaraynum2[2]是15。虽然vector
无疑是更好的答案,但实际上您可以在没有容器的情况下完成它newint[3]{4,3,3}代码>。我不明白为什么会有人想这么做。@R.MartinhoFernandes:所以你可以。今天我学到了一些东西。@R.MartinhoFernandes:这是唯一的例子。。我指的是动态元素的计数。你需要一个[3]
;它无法从初始化器列表中推断大小。@ecatmur:我尝试了您的代码,但出现错误“没有匹配的函数用于调用“copy(int[5],int&,int*&)”。我补充说#包括。我不正确的地方是什么?@URL87我忘记了第二个参数的&
。固定的。