как исправить ошибку в std :: vector <int>WidthNumbers = 320, 640, 1280 ;? - PullRequest
1 голос
/ 05 декабря 2010

Поэтому я пытаюсь сделать что-то вроде std::vector<int> WidthNumbers = 320, 640, 1280;, но компилятор выдает ошибку C2440: 'int' to 'std::vector<_Ty>'

Ответы [ 4 ]

5 голосов
/ 05 декабря 2010

Вы не можете инициализировать 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);
2 голосов
/ 05 декабря 2010

Вы также можете использовать 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);
}
1 голос
/ 05 декабря 2010

Если ваш компилятор поддерживает C ++ 0x (MSVC ++ 2010 имеет частичную поддержку C ++ 0x ), вы можете использовать список инициализаторов

std::vector<int> WidthNumbers = {320, 640, 1280};
0 голосов
/ 21 декабря 2010

Это немного больше работы, но я считаю, что она очень хорошо работает с 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;
 }

Так я лично объявляю и инициализирую векторы, у меня это всегда работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...