본문 바로가기
Lang/C++

[C++] STL 2차원 vector 사용법

by 상똥 2023. 2. 28.

1. 2차원 벡터 선언

(1) vector를 사용하기 위해서는 헤더파일을 추가해야 한다. : #include <vector> 

(2) vector의 선언은 다음과 같다 : vector<vetor<타입>> 벡터명;

(3) vector의 행열 크기를 결정하며 선언하기 : vector<vector<타입>> 벡터명(행 길이, vector<타입>(열 길이));

//이때, 값은 0

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
	vector<vector<int>> V1;
	vector<vector<int>> V2(3, vector<int>(5));
}

2. 벡터 값 할당

(1) 먼저 1차원 벡터를 선언한 후 2차원 벡터에 (행마다) 삽입하기 : 2차원벡터명.push_back(1차원벡터명);

(2) 이미 사이즈가 정해진 2차원 벡터에 값 채우기 : fill(벡터명[행].시작부분(), 벡터명[행].끝부분(), 채울 값);

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
	vector<vector<int>> V1;
	vector<vector<int>> V2(3, vector<int>(5));

	//1차원 벡터를 활용한 2차원벡터 값 할당
	for (int i = 0; i < 3; i++) {
		vector<int> temp;
		for (int j = 1; j < 6; j++) {
			temp.push_back(i * 5 + j);
		}
		V1.push_back(temp);
	}
	//이미 크기가 정해진 2차원 벡터에 행마다 fill
	for (int i = 0; i < 3; i++)
		fill(V2[i].begin(), V2[i].end(), 1);

	cout << "V1" << endl;
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 5; j++) {
			cout.width(3);
			cout << V1[i][j];
		}
		cout << endl;
	}

	cout << "V2" << endl;
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 5; j++) {
			cout.width(3);
			cout << V2[i][j];
		}
		cout << endl;
	}
}

3. 벡터 사이즈 확인하기

(1) 행 개수 확인 : 벡터명.size();

(2) 열 개수 확인 : 벡터명[행].size();

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
	vector<vector<int>> V1;

	for (int i = 0; i < 3; i++) {
		vector<int> temp;
		for (int j = 1; j < 6; j++) {
			temp.push_back(i * 5 + j);
		}
		V1.push_back(temp);
	}

	cout << V1.size() << endl;	//행 개수 출력
	cout << V1[0].size();	//열 개수 출력
}

결과

4. 벡터 값 지우기

(1) 행별로 원소 지우기(맨 뒤부터) : 벡터명[행].pop_back();

(2) 행 원소 전부 지우기 : 벡터명[행].clear();

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
	vector<vector<int>> V1;

	for (int i = 0; i < 3; i++) {
		vector<int> temp;
		for (int j = 1; j < 6; j++) {
			temp.push_back(i * 5 + j);
		}
		V1.push_back(temp);
	}
    
	cout << "V1[0] size : " << V1.size() << endl;
	V1[0].pop_back();	//0번째 행의 맨 뒤 원소 지우기
	cout << "V1[0] popback!" << endl << "V1[0] size : " << V1[0].size() << endl;
	V1[2].clear();	//0번째 행 전체 지우기
	cout << "V1[0] clear!" << endl << "V1[0] size : " << V1[2].size();
}

결과

5. 벡터 값 정렬

 

'Lang > C++' 카테고리의 다른 글

[C++] STL 1차원 vector 사용법  (1) 2023.02.02