본문 바로가기
프로그래밍/C++

C++ ] 2차원 vector 사용법

by eteo 2023. 3. 31.

 

 

1. 생성 및 요소 접근

 

2차원 벡터는 vector<vector<T>> 형태로 생성할 때, 첫 번째 인자에 행의 개수를 넣고, 두 번째 인자에는 열의 개수를 넣는다. 또한, 세 번째 인자로는 2차원 벡터의 모든 요소를 초기화할 수 있는 값을 넣는다. 예를 들어, 위의 코드에서는 0으로 모두 초기화한다. 

 

이렇게 생성한 2차원 벡터는 matrix[i][j]와 같이 2개의 인덱스로 요소에 접근할 수 있다.

 

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<vector<int>> matrix(3, vector<int>(3, 0));
    matrix[0][0] = 1;
    matrix[1][1] = 2;
    matrix[2][2] = 3;

    for(int i=0; i<3; i++) {
        for(int j=0; j<3; j++) {
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

 

 

 

2차원 벡터에서 크기를 지정하지 않고 push_back 함수를 사용하려면, 먼저 첫 번째 차원의 요소를 추가한 다음, 추가한 요소에 대해서 두 번째 차원의 요소를 추가해주면 된다.

 

아래 예시 코드에서 2차원 벡터의 첫 번째 차원을 생성한 후, push_back 함수를 사용하여 첫 번째 차원에 3개의 요소(빈 벡터)를 추가하고, 각 요소마다 push_back 함수를 사용하여 두 번째 차원에 값을 추가하고 있다.

 

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<vector<int>> matrix;
    matrix.push_back(vector<int>());
    matrix.push_back(vector<int>());
    matrix.push_back(vector<int>());

    matrix[0].push_back(1);
    matrix[0].push_back(2);
    matrix[0].push_back(3);

    matrix[1].push_back(4);
    matrix[1].push_back(5);
    matrix[1].push_back(6);

    matrix[2].push_back(7);
    matrix[2].push_back(8);
    matrix[2].push_back(9);

    for(int i=0; i<3; i++) {
        for(int j=0; j<3; j++) {
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

 

 

 

 

 

 

2. 행/열의 개수 알아내기

 

size() 메소드 사용.

각 행의 열의 개수가 모두 같다고 가정하면 아래와 같은 방법으로 알아낼 수 있다.

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<vector<int>> v = {{1, 2, 3}, {4, 5, 6}};

    // 행의 개수 알아내기
    int rows = v.size();
    cout << "행의 개수: " << rows << endl;

    // 열의 개수 알아내기
    int cols = v[0].size(); // 첫 번째 행의 열의 개수
    cout << "열의 개수: " << cols << endl;

    return 0;
}

'프로그래밍 > C++' 카테고리의 다른 글

C++ ] stream 상속관계  (0) 2023.05.14
C++ ] accumulate 함수 사용시 주의사항  (0) 2023.03.31
C++ ] vector 사용법  (0) 2023.03.31
C++ ] STL 과 컨테이너  (0) 2023.03.25
범위기반 for문, 문자열에서 문자 반복  (0) 2023.03.25