如何修复std :: vector <int>中的错误WidthNumbers = 320,640,1280;?

Rel*_*lla 1 c++ visual-studio-2010 visual-studio

所以我尝试做类似的事情, std::vector<int> WidthNumbers = 320, 640, 1280;但编译器给我错误C2440: 'int' to 'std::vector<_Ty>'

Pra*_*ian 5

您无法vector使用该语法初始化a .C++ 0x允许初始化列表允许您使用以下内容:

std::vector<int> WidthNumbers = {320, 640, 1280};
Run Code Online (Sandbox Code Playgroud)

但这还没有在VS2010中实现.替代方案是:

int myArr[] = {320, 640, 1280};
std::vector<int> WidthNumbers( myArr, myArr + sizeof(myArr) / sizeof(myArr[0]) );
Run Code Online (Sandbox Code Playgroud)

要么

std::vector<int> WidthNumbers;

WidthNumbers.push_back(320);
WidthNumbers.push_back(640);
WidthNumbers.push_back(1280);
Run Code Online (Sandbox Code Playgroud)

  • 使用第一个选项时,以下模板很有用:`template <typename T,size_t N> T*endof(T(&ra)[N]){return ra + N; }`.它返回C++ 0x的`std :: end`对数组所做的相同指针,这意味着第二行变为`std :: vector <int> WidthNumbers(myArr,endof(myArr));` (3认同)