【问题标题】:How to add a value to a vector of arrays?如何将值添加到数组向量?
【发布时间】:2017-06-08 18:35:23
【问题描述】:

我需要创建一个向量,其中每个值实际上是四个值。这么好的老谷歌把我带到了这些页面:

Vector of a Fixed size array

Cant make a vector of fixed size arrays?

Vector of vectors, reserve

从这些线程中,我相信使用以下语法是最佳的:

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++ 的人,所以我可能会遗漏一些明显的东西。提前致谢。

【问题讨论】:

  • 嗯,它似乎为我编译on IdeOne...
  • 你的代码给了我一个很大的线索,在其他线程中没有人提到:#include :D 可能是这样。我没想过要检查,因为使用 std::array 的第一行没有编译错误。

标签: c++ arrays vector


【解决方案1】:

试试

arrayVector.push_back(std::array&ltunsigned int, 4&gt{0, 1, 2, 3});

【讨论】:

  • 这给出了两个错误:“不完整的类型是不允许的”和“太多的初始化值”
  • 它使用 g++ 5.4 为我编译。 p.s.我刚刚看到您对头文件的评论。我想每个人都认为它已被包括在内(可以说是在幕后)。干杯。
【解决方案2】:

试试这个:

arrayVector.push_back({{ 0, 1, 2, 3 }});

旧版本的 Clang(例如)需要额外的大括号,例如 - 原因似乎是您正在初始化 std::array 内的 C 样式数组。

【讨论】:

  • 似乎对我不起作用。不过,它可能会对其他人有所帮助,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
  • 2021-02-18
  • 2016-10-15
相关资源
最近更新 更多