如何同时使用std::vector和std::array?

3
我正在使用类似这样的东西:
std::vector<std::array<double, 3>> myarray;

但是当我想向数组中添加新元素时,我尝试使用

myarray.push_back({0, 0 ,0});

在VS2012中,它无法编译。

那么我该如何将std::array作为std::vector的元素使用呢?

谢谢。


std::vector 没有 pushback 成员。请发布真实的代码。 - juanchopanza
1
在 http://ideone.com/xUZmpw 进行编译。 - Kos
2
-2?这个问题没有任何问题。OP指出了编译器并提交了一个SSCCE。问题归结为编译器伪装成符合C++11标准,但缺少许多功能。 - Bathsheba
谢谢大家。这是我的打字错误,已经更正了。 - user3692418
1
@Bathsheba(我没有投票)这不是一个 sscce。它有一个错别字,仍然缺少包含和函数。另外,据我所知,MSVC是非常少数不假装成C++11编译器的编译器之一(__cplusplus的值),我不知道你为什么要称之为伪装。 - Marc Glisse
显示剩余3条评论
3个回答

2
很抱歉,您运气不佳:VS2012不支持大括号初始化。
请注意,您的代码是有效的C++11。

谢谢。但是我该如何在VS2012中将std :: array类型的元素添加到std :: vector中? - user3692418
一个 std::array,与普通数组不同的是,可以作为单个值进行复制。声明一个类型为 std::array 的本地变量,并将其传递给 push_back - MSalters

0

你必须走更长的路。

std::array<double, 3> a; // Maybe you can use brace initialization here? Not sure
a[0] = 1;
a[1] = 5;
a[2] = 0;
myarray.push_back(a);

0

我相信 push_back 中缺失的下划线是一个笔误。

问题出在 VS2012 上。请使用支持 C++11 的 VS2013 或编译器,或显式初始化一个新元素。


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