2

不是真正的问题,而是时尚危机。

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

给我一个语法错误。有什么方法可以将带有值的 std 数组初始化为一行中的向量?

4

2 回答 2

10

的第一条规则std::array是:当有疑问时,添加更多的大括号。那是因为您实际上是在初始化std::array.

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

GCC 和 Clang 都接受这个声明。

于 2013-06-07T12:45:01.427 回答
9

vs10 仍然不会接受它:/

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

Visual Studio 2010 没有实现统一初始化(即统一初始化,而不仅仅是聚合初始化)。它不是符合 C++11 的编译器;它只有一些 C++11 特性。

于 2013-06-07T12:53:33.763 回答