C++ vector 初始化

标签 c++ visual-c++ vector initialization c++11

我一直在 Code::Blocks 和 MingW 编译器中使用以下带有值的 vector 初始化:

vector<int> v0 {1,2,3,4};

之后,我不得不将代码移动到一个 visual studio 项目 (c++) 并尝试构建。我收到以下错误:
局部函数定义是非法的

Visual Studio 编译器不支持这种初始化?
我需要如何更改代码以使其兼容?
我想初始化 vector 并同时用值填充它,就像数组一样。

最佳答案

Visual C++ 尚不支持初始化列表。

最接近这种语法的是使用一个数组来保存初始值设定项,然后使用范围构造函数:

std::array<int, 4> v0_init = { 1, 2, 3, 4 };
std::vector<int> v0(v0_init.begin(), v0_init.end());

关于C++ vector 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9575776/

相关文章:

c++ - 如何在 C++ 中将成员函数分配给指向成员函数的指针

c++ - 如何仅包含一次文件/防止 C++ 程序中旧 C API 中的函数重新定义

c++ - 使用迭代器从 vector 中提取子 vector

c++ - 比较两个 vector 元素并得到 EXC_BAD_ACCESS(code=1, address = 0x0) 错误

c++ - 访问 vector 元素的成员函数时发生访问冲突

c++ - 绑定(bind) C++ 和 Fortran

c++ - 在 std::vector 中模板化存储多个不同类型

c++ - 由于 const,无法在构造函数中转换参数

c++ - 如何在 Visual Studio 2005 及更高版本中自动更改项目设置

c++ - 显示如何向 Opera/Firefox 4 等 Vista 窗框的玻璃部分添加按钮/菜单的示例