Array 초기화

이영구·2022년 12월 29일
0

C++

목록 보기
1/1

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;
}
profile
In to the code!

0개의 댓글