2010-12-05 2 views

답변

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); 
+3

첫 번째 옵션을 사용할 때 다음 템플릿이 유용합니다 :'template T * endof (T (& ra) [N]) {return ra + N; }'. C++ 0x의'std :: end'가 배열과 같은 포인터를 반환합니다. 두번째 줄은'std :: vector WidthNumbers (myArr, endof (myArr));' –

1

을 제공합니다 (MSVC++ 2010 partial support for C++0x있다) 당신이 initializer list

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

그러나 VC++ 2010의 부분 지원은이 기능을 포함하지 않습니다. –

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); 
} 
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; 
} 

이 내가 개인적으로 선언하고 벡터를 초기화하는 방법, 그것은 항상 날

관련 문제