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 |