无法将std数组初始化为std向量

时间:2013-06-07 12:40:49

标签: c++ c++11

不是实际问题,而是时尚危机..

 vector<array<unsigned int, 3>> tri;
 tri.push_back(array<unsigned int, 3> {0, 0, 0});

给我一​​个语法错误。有没有办法用一行中的值初始化std数组?

2 个答案:

答案 0 :(得分:10)

std::array的第一条规则是:如有疑问,请添加更多括号。那是因为你实际上正在初始化std::array的原始数组子对象。

tri.push_back(array<unsigned int, 3> {{0, 0, 0}});

GCC和Clang都接受这一声明。

答案 1 :(得分:9)

  

vs10仍然不接受它:/

这就是为什么在您的问题中始终提供完整的信息非常重要。

Visual Studio 2010不实现统一初始化(这是统一初始化,而不仅仅是聚合初始化)。它不是符合C ++ 11标准的编译器;它只有一些C ++ 11功能。