大家好我想在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数组这是否可以实现
答案 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;
}