所以我尝试做std::vector<int> WidthNumbers = 320, 640, 1280;
之类的事情,但编译器给了我错误C2440: 'int' to 'std::vector<_Ty>'
答案 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;
}
这是我个人声明和初始化矢量的方式,它总是适用于我