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

时间:2010-12-05 15:23:17

标签: c++ visual-studio visual-studio-2010

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

4 个答案:

答案 0 :(得分:5)

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

std::vector<int> WidthNumbers = {320, 640, 1280};

但这在VS2010中尚未实现。替代方案是:

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

std::vector<int> WidthNumbers;

WidthNumbers.push_back(320);
WidthNumbers.push_back(640);
WidthNumbers.push_back(1280);

答案 1 :(得分:2)

您也可以使用boost::assign::list_of

#include <boost/assign/list_of.hpp>

#include <vector>

int
main()
{
    typedef std::vector<int> WidthNumbers;
    const WidthNumbers foo = boost::assign::list_of(320)(640)(1280);
}

答案 2 :(得分:1)

如果您的编译器支持C ++ 0x(MSVC ++ 2010有partial support for C++0x),您可以使用initializer list

std::vector<int> WidthNumbers = {320, 640, 1280};

答案 3 :(得分:0)

这稍微多一些工作,但我发现它在VS 2010中运行良好。您可以使用_vector.push_back()方法手动将项添加到向量中,而不是使用初始化列表:

//forward declarations
#include <vector>  
#include <iostream>
using namespace std;
// main() function
int _tmain(int argc, _TCHAR *argv)
{
     // declare vector
     vector<int> _vector;
     // fill vector with items
     _vector.push_back(1088);
     _vector.push_back(654);
     _vector.push_back(101101);
     _vector.push_back(123456789);
     // iterate through the vector and print items to the console
     vector<int>::iterator iter = _vector.begin();
     while(iter != _vector.end())
     {
          cout << *iter << endl;
          iter++;
     }
     // pause so you can read the output
     system("PAUSE");
     // end program
     return 0;
 }

这是我个人声明和初始化矢量的方式,它总是适用于我