我知道以前有人问过这个问题,而且我知道在 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。
我该如何做到这一点?
编辑:附上错误截图:
Visual Studio 2012不支持通过初始化列表进行向量初始化。VS2012 包含的标准库缺少很多 C++11 支持,而 VS2012 C++ 编译器本身支持这些标准库。
可悲的是,就像 VS2012 和 gcc 4.7 的情况一样,对新 C++11 功能的出色编译器支持受到部分库支持的阻碍,这似乎总是落后于编译器。
正如@Michael Goldshteyn 之前所说,无法使用此编译器及其标准库。但是如果你愿意包含 boost 库,你可以使用这样的代码:
#include <boost/assign/std/vector.hpp>
using namespace boost::assign;
{
std::vector< int > myElements;
myElements += 1,2,3,4,5;
}
在您拥有可以支持向量初始化器列表的编译器之前,您可以使用boost::assign::list_of