是否可以使用new运算符在C ++ 11中初始化数组

时间:2013-03-03 08:02:51

标签: c++ arrays stl new-operator

大家好我想在C ++中初始化一个像这样的数组

int array[10]={1,2,3,4,5,6,7,8,9,10};

但我正在使用新的运营商。

我知道我可以像下面那样做,然后迭代并分配值

shared_ptr<int[]> l (new int[7]);

但如果有一些方法我可以在新命令

中初始化它,我真的很喜欢 像这样shared_ptr<int[]> l (new int[7] ={1,2,3,4,5,6,7}); 但遗憾的是,这不是一个有效的语法。

同样在C ++ 11标准中添加了一个新的STL容器数组,有人可以告诉我是使用普通数组还是STL数组这是否可以实现

2 个答案:

答案 0 :(得分:9)

C ++ 11为容器提供initializer_list,其工作方式如下:

std::vector<int> array = {1,2,3,4,5};

vector 动态数组类。


这是您的shared_ptr版本:

std::shared_ptr<int> ptr(new int[5]{1,2,3,4,5}, std::default_delete<int[]>());

答案 1 :(得分:0)

感谢C ++ 11和统一初始化,您可以:

int main()
{
    int* p = new int[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    // ...
    delete[] p;
}

live demo