如何向数组向量中添加值?

3
我需要创建一个向量,其中每个值实际上是四个值。因此,好老的Google带我来到了这些页面:

固定大小数组的向量

无法创建固定大小数组的向量?

向量的向量,预留

从这些线程中,我相信以下语法是最优的:
std::vector<std::array<unsigned int, 4>> arrayVector;

那部分似乎可以工作,但现在我想添加我的第一行数值:
arrayVector.push_back({ 0, 1, 2, 3 });

而那一部分无法编译:

严重性 代码 描述 项目 文件 行 抑制状态 错误 (活动) 没有匹配参数列表的重载函数 "std::vector<_Ty, _Alloc>::push_back [with _Ty=std::array, _Alloc=std::allocator>]"

我也尝试将int数组创建为一个单独的变量,并将该变量传递给push_back,但结果相同。

我正在使用Microsoft Visual Studio Community 2015,我通常不选择C++,因此可能会错过一些明显的东西。谢谢。


1
嗯,看起来在 IdeOne 上编译没问题... - Ken Y-N
1
你的代码给了我一个很大的线索,这在其他帖子中没有人提到:#include <array> :D 这可能就是原因。我没有想到去检查它,因为在使用std::array的第一行没有编译错误。 - braks
2个回答

4

试试这个:

arrayVector.push_back({{ 0, 1, 2, 3 }});
< p >旧版Clang(例如)需要额外的大括号,例如--原因似乎是您正在初始化std :: array 中的C样式数组。< / p >

对我似乎没什么用。但可能会帮助其他人,谢谢! - braks

1

我会尽力完成您的翻译工作。以下是内容:

    arrayVector.push_back(std::array<unsigned int, 4>{0, 1, 2, 3});


这会产生两个错误:“不允许不完整的类型”和“初始化值太多”。 - braks
1
它在我的g++ 5.4上编译通过。顺便说一句,我刚看到了你的关于头文件的评论。我想每个人都假定它已经被包含了(可以说是在幕后)。谢谢。 - london-deveoper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接