[英]c++ vector initialization
我一直在使用Code :: Blocks和MingW編譯器中的值進行以下向量初始化:
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());
你可以在VS2013中做到這一點
vector<int> v0{ { 1, 2, 3, 4 } };
完整的例子
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v0{ { 1, 2, 3, 4 } };
for (auto& v : v0){
cout << " " << v;
}
cout << endl;
return 0;
}
另一種選擇是boost::assign
:
#include <boost/assign.hpp>
using namespace boost::assign;
vector<int> v;
v += 1,2,3,4;
我定義了一個宏:
#define init_vector(type, name, ...)\
const type _init_vector_##name[] { __VA_ARGS__ };\
vector<type> name(_init_vector_##name, _init_vector_##name + _countof(_init_vector_##name))
並使用這樣的:
init_vector(string, spell, "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" );
for(auto &a : spell)
std::cout<< a <<" ";
如果您使用的是Visual Studio 2015
,則使用list
初始化vector
方法是:
vector<int> v = {3, (1,2,3)};
因此,第一個參數(3)
指定大小,列表是第二個參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.