如何在声明后立即为新初始化的数组赋值

use*_*702 2 c++ arrays initialization

如果我使用指针,如何给出新的初始化数组的值?例如

int* array = new int[3];  <- I want to give the values {1,2,3} on the same row but not:

array[0] = 5;
array[1] = 3;
array[2] = 4;
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 5

您可以使用大括号括起初始值设定项:

int* array = new int[3]{1, 2, 3};
Run Code Online (Sandbox Code Playgroud)

通常的警告是,你需要确保你打电话delete []array.这比第一眼看到的更难保证.出于这个原因和其他原因,使用以下内容可能是一个更好的主意std::vector<int>:

std::vector<int> v{1,2,3};
Run Code Online (Sandbox Code Playgroud)

如果你坚持使用较旧的C++ 11之前的实现,那么就不能使用大括号括起来的初始化器语法.您将不得不在某个级别使用循环(无论是您自己的循环,还是使用某些标准或第三方库函数.)

  • @Zacrath和C++ 11是C++.该问题对使用现行标准没有任何限制. (2认同)
  • @ user2128702 OMG,即gcc 3.4.2.下一站:http://nuwen.net/mingw.html并下载gcc 4.8.2以获得开箱即用的所有这些C++ 11功能 (2认同)