🔎 fill()

배열의 값을 일괄적으로 초기화할 때 사용하는 함수
일부값을 초기화하는 것도 가능하지만 보통은 전체를 초기화하는 것이 좋다

 → 보통 last를 (first + 배열 크기)로 지정하는데 일부만 초기화할 경우
   앞에서 부터 순차적으로 초기화되므로 원하는 바와 다르게 초기화된다

ForwardIterator last에 마지막 주소가 아닌 다음 주소를 넣는다

void fill(ForwardIterator first, ForwardIterator last, const T& val);

사용 예시

#include <bits/stdc++.h>
using namespace std;
int d1[5];
int d2[3][3];

int main() {
	//1차원 배열
	fill(&d1[0], &d1[0] + 5, 1);	//last에 &d1[5]도 상관없음
	for (int i = 0; i < 5; i++){
		cout << d1[i] << " "; }
	cout << '\n';
	
	//2차원 배열
	fill(&d2[0][0], &d2[0][0] + 9, 2);	//last에 &d2[2][3]도 상관없음
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			cout << d2[i][j] << " ";
		}
		cout << '\n';
	}
	cout << '\n';

	return 0;
}

출력 결과

1 1 1 1 1
2 2 2
2 2 2
2 2 2

시간복잡도

$O(n)$


🔎 memset()

바이트 단위로 초기화를 진행한다
0, -1, char형의 하나의 문자로 초기화 할 때 사용한다 → 이외의 숫자로 초기화 불가능

void * memset(void * ptr, int value, size_t num);	//memset(배열의 이름, value, sizeof(배열))

사용 예시

#include <bits/stdc++.h>
using namespace std;
int d1[5];
int d2[3][3];

int main() {
	//1차원 배열
	memset(d1, -1, sizeof(d1));
	for (int i = 0; i < 5; i++){
		cout << d1[i] << " "; }
	cout << '\n';
	
	//2차원 배열
	memset(d2, 0, sizeof(d2));
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			cout << d2[i][j] << " ";
		}
		cout << '\n';
	}
	cout << '\n';

	return 0;
}

출력 결과

-1 -1 -1 -1 -1
0 0 0
0 0 0
0 0 0

시간복잡도

$O(n)$

태그:

카테고리:

업데이트:

댓글남기기