Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用新的_C++_Arrays_C++11_C++03 - Fatal编程技术网

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我忘记了第二个参数的
&
。固定的。