[C++, STL] 2차원 벡터(vector)의 range-based for loop 사용

다른 글

[C++, STL] 2차원 벡터 만들기

목적

2차원 벡터의 모든 원소를 Range-based for loop를 이용하여 출력

Range-based for loop는 C++11부터 지원한다.

구현

테스트를 위한 벡터 생성

vector<vector<int>>v;
void makeVector() {
	v.resize(5);
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 5; j++) {
			v[i].push_back(i*10 + j);
		}
	}
}

위와 같이 코드를 작성하면 아래와 같은 5X5 벡터를 만들 수 있다.

01234
1011121314
2021222324
3031323334
4041424344

Range-based for loop를 이용한 벡터 원소 출력

int main() {
	makeVector();
	
	for (auto i : v) { // 행 이동
		for (auto j : i) { // 열 이동
			cout << j << " ";
		}
		cout << endl;
	}
}

Range-based for loop 역시 일반적인 이중 for문과 원리는 동일하다. 외부 for문은 2차원 벡터를 1행부터 5행까지 차례로 선택하고 내부 for문은 선택된 행에서 1열부터 5열까지 차례로 선택한다.

그리고 for (auto i : v) 에서 i는 벡터이므로 i[idx]를 이용한 원소 직접 참조가 가능하다.

// 2열 출력

int main() {
	makeVector();
	
	for (auto i : v) {
		cout << i[1] << " ";
	}
}

전체코드

#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;

vector<vector<int>>v;
void makeVector() {
	v.resize(5);
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 5; j++) {
			v[i].push_back(i*10 + j);
		}
	}
}

int main() {
	makeVector();
	
	for (auto i : v) {
		for (auto j : i) {
			cout << j << " ";
		}
		cout << endl;
	}
}

Leave a Comment