fill 2차원 배열, vector 초기화

2019. 10. 19. 18:13알고리즘/암기

전체 초기화를 가정하면, 처음에는 [0][0]을 써준 후 그 다음 칸에는 [최대 행(값) - 1][최대 열], 다음 칸에는 초기 상태의 값을 넣는다

fill(&arr[0][0], &arr[MAX - 1][MAX], VALUE);

시작 인덱스가 다르다면 다르게 채워 넣으면 된다

 

vector는 생성 시, 원하는 값으로 바로 채워 넣을 수 있지만 추후에 바꾸게 될 수 있으므로 알아두면 좋다

 

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

using namespace std;

int main(void) {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);

	vector<vector<int>> mat(5, vector<int>(5));

	fill(mat.begin(), mat.end(), vector<int>(5, 5));
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 5; j++) {
			cout << mat[i][j] << ' ';
		}
		cout << '\n';
	}
	cout << '\n';
	return 0;
}

 

begin 쪽의 주소를 옮겨 특정 행부터 채울 수 있다

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

using namespace std;

int main(void) {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);

	vector<vector<int>> mat(5, vector<int>(5));

	fill(mat.begin() + 2, mat.end(), vector<int>(5, 5));
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 5; j++) {
			cout << mat[i][j] << ' ';
		}
		cout << '\n';
	}
	cout << '\n';
	return 0;
}

'알고리즘 > 암기' 카테고리의 다른 글

세그먼트 트리  (0) 2019.10.30
set 컨테이너  (0) 2019.10.23
벨만포드 알고리즘  (0) 2019.10.18
수학적 귀납법으로 증명하기  (0) 2019.10.18
피보나치 수의 시간복잡도  (0) 2019.10.18