2014-09-22 2 views
-4

어떻게하면 2D 벡터를 C++로 사용할 수 있습니까? 다음 코드를 작성했지만 작동하지 않습니다. 런타임 오류가 발생합니다.2 차원 벡터 (C++)

vector<vector<int> >itemsets; 
int main() 
{ 
    itemsets.push_back(vector<int>()); 
    itemsets[0].push_back(1); 
    itemsets[1].push_back(2); 
    cout<<itemsets[0][0]<<itemsets[1][0]; 
    return 0; 
} 
+0

'실행 시간 오류 .' 어디에서? –

+0

@ 토마스 1과 2를 인쇄해야합니다. 그러나 아무것도 인쇄하지 않으며 창문이 작동을 멈췄다는 오류가 발생합니다 (코드 블록을 사용함) –

답변

2

벡터 itemsets에 하나의 요소 만 푸시했습니다.
그래서 액세스 할 수있는 것은 itemsets [0]뿐입니다. 그것은 당신이 푸시 한 벡터 인 첫 번째 요소를 제공합니다 (vector1이라고 부르 자). 실행으로

는 :

itemsets[0].push_back(1); 
itemsets[0].push_back(2); 

당신은 vector1 두 요소를 누릅니다.

: 첫번째 인덱스 행이고 두번째 열에 여기서 [] []를 사용 vector1

 col1 col2 
row1 1 2 

액세스 할 수있는 요소 우리 테이블로 나타내면

그것과 같을 것이다

cout<<itemsets[0][0]<<itemsets[0][1]; 

편집 :
당신은 당신이 vector2itemsets에 추가 할 필요가 두 행에 추가하려면 :

012,337,787,284을

또한 당신은 int에서 std::vector 생성자를 사용할 수 있습니다 또한

itemsets.push_back(vector<int>(1, 1)); //vector1 push 1 (first parameter is size of vector) 
itemsets.push_back(vector<int>(1, 2)); //vector2 push 2 

을 C++ (11)에 당신이 한 번에 둘 이상의 값을 추가 할 수 있습니다

또한
itemsets.push_back(std::vector<int>({1, 2})); //vector1 
itemsets.push_back(std::vector<int>({3, 4})); //vector2 
std::cout<<itemsets[0][0]<<itemsets[0][1]<<itemsets[1][0]<<itemsets[1][1]; 

C++ 11을 사용하면 한 행 내에서 벡터를 초기화 할 수 있습니다.

vector<vector<int> >itemsets = {{1}, {2}}; //add two rows: row1: 1, and row2: 2. 
+0

감사합니다. 알았습니다. –