我正在阅读C ++ Primer 5th,有关容器的章节说了一些关于赋值的内容,引用了这里:
“......
c = {a,b,...};
将c中的元素替换为初始化列表中元素的副本。(对数组无效)......“
然后我尝试了VS2016:
array<int, 2>ai;
ai = { 1,3 };
for (auto c : ai) {
cout << c << endl;
}
令人惊讶的是,这可能有效,没有发生错误。
所以我只想知道,是否可以为阵列分配初始化列表?或者仅仅是因为编译器?
答案 0 :(得分:3)
是的,它被定义为可转让:
类
array
依赖于隐式声明的特殊成员函数 (12.1,12.4和12.8)符合容器要求表 在23.2。
您可以使用初始化列表语法,因为array
的构造函数不是explicit
。否则你必须说出以下内容:
ai = array<int,2>{ 1,3 };