4

我知道以前有人问过这个问题,而且我知道在 C++11 中你可以做到

vector<int> v = {2,5,8,11,14};
vector<int> v{2,5,8,11,14};

v.push_back({x,y});

但它给了我一个编译错误。我正在使用 Visual Studio Express 2012。

我该如何做到这一点?

编辑:附上错误截图:

在此处输入图像描述

4

3 回答 3

4

Visual Studio 2012不支持通过初始化列表进行向量初始化。VS2012 包含的标准库缺少很多 C++11 支持,而 VS2012 C++ 编译器本身支持这些标准库。

可悲的是,就像 VS2012 和 gcc 4.7 的情况一样,对新 C++11 功能的出色编译器支持受到部分库支持的阻碍,这似乎总是落后于编译器。

于 2013-08-07T13:39:40.053 回答
0

正如@Michael Goldshteyn 之前所说,无法使用此编译器及其标准库。但是如果你愿意包含 boost 库,你可以使用这样的代码:

#include <boost/assign/std/vector.hpp>

using namespace boost::assign;

{
    std::vector< int > myElements;
    myElements += 1,2,3,4,5;
}
于 2013-08-07T13:47:37.853 回答
0

在您拥有可以支持向量初始化器列表的编译器之前,您可以使用boost::assign::list_of

于 2013-08-07T13:42:12.707 回答