3

大家好,我想像这样在 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 数组可以实现

4

2 回答 2

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[]>());
于 2013-03-03T08:04:27.487 回答
0

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

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

现场演示

于 2013-03-03T11:36:39.840 回答