C++ - 다차원 배열 초기화 방법. std::fill()의 편리한 사용법
std::fill
// n 차원 배열의 초기화. 제 2인수의 형의 사이즈마다 초기화 해 둔다
template<typename A, size_t N, typename T>
void Fill(A (&array)[N], const T &val){
std::fill( (T*)array, (T*)(array+N), val );
}
예제 코드
int main(){
int a[10];
Fill( a, 12 ); // 배열 a의 내용이 모두 12로 된다
int b[10][20];
Fill( b, 100 ); // 2차원 이라도 쓰는 방법은 같다
int c[10][20][30];
Fill( c, 100 ); // 복수 차원에서 사용 가능
long long d[20][20];
Fill( d, (long long)100 ); // 제2인수의 형을 배열 요소의 형에 맞추지 않으면 안 된다
int N = 10;
int e[N][2];
//Fill( e, 100 ); // 에러. 동적으로 확보한 배열에는 사용할 수 없다
return 0;
}
std::fill()만 사용할 때는 다음과 같이 초기화 할 수도 있다.
int a[10][20];
std::fill( a[0], a[10], 100 );
int b[10][20][30];
std::fill( b[0][0], b[10][0], 100 );
// 앞의 Fill()이 하는 것
int array[10][20][30];
int val = 100;
std:fill( (int*)array, (int*)(array+10), val );
이 글은 2020-05-06에 작성되었습니다.