array 초기화 방법에는 여러가지 방법이 존재한다.
그 중에서 간단한 것들을 알아 보았고, 현재는 vector container의 사용이 편해서 사용하고 있으나, 초기화에 대해서는 단순한 array 배열이 생각보다 쉬울 수 있음을 깨달았다.
vector operation이 필요한 것이 아니라면 단순한 array의 사용도 고려해 봄직하다.
<update 23/01/17>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
const int _max = 5;
int arr[_max][_max] = {2,};
int main() {
int n = 8;
// 초기화 세팅 방법 1, vector container 내부 초기화 세팅
vector<vector<int>> a(n, vector<int> (n, 1));
// 초기화 세팅 방법 2, algorithm의 fill method 이용
// fill의 first와 last의 주소에 2중 배열의 경우는
// a가 아닌 a[0]가 되어야 하며, a[something]으로 초기화 되면 후도 a[something]으로 초기화 해야 한다.
// double 자료형의 경우는 memset을 사용하지 못하고 아래의 method를 사용해야 함
fill(a[0].begin(), a[0].begin()+12, 3);
// or
fill(begin(a[0]), end(a[end_index]), 1.5)
for (int i=0;i<n;i++) {
for (int j=0;j<n;j++) {
cout << a[i][j];
}
cout << '\n';
}
// 초기화 세팅 방법 3, cstring의 memset이용
// int는 0또는 -1로만 세팅가능하다. unsigned char이므로
// 1 byte씩 값을 채워넣고, 0은 모든 바이트가 0, -1은 모든 바이트가 1이다.
// 변수가 double일 경우는 위와 같은 법칙이 성립되지 않음
memset(arr, -1, sizeof(arr));
// 초기화 세팅 방법 4, int array의 fill method 사용
fill(&arr[0][0], &arr[_max][_max], 2);
// 초기화 세팅 방법 5, 그냥 for 문 사용
for (int i=0;i<_max;i++) {
for (int j=0;j<_max;j++) {
arr[i][j] = 9;
}
}
for (int i=0;i<_max;i++) {
for (int j=0;j<_max;j++) {
cout << arr[i][j];
}
cout << '\n';
}
// memset(a[0].begin()+4, 'c', 3);
return 0;
}