컴퓨터 언어/C++

[c++] 배열의 초기화 방법(fill / fill_n)

  • -
728x90
반응형

일반적으로 배열을 초기화 할 때, 일부만 채워넣은 경우에는 나머지는 0으로 초기화 된다.

 

다만, 문제 상황에 따라서 초기값이 0이 아니라 다른 숫자가 나와야 하는 경우에는 

fill함수나 fill_n 함수를 이용하주면 된다.

 

이용방법은 다음과 같다.

 

1. fill_n의 이용

fill_n(변경하려는 원소의 범위 시작주소, 변경하려는 원소 갯수, 변경 값)

 

2. fill의 이용

fill(변경하려는 원소의 범위 시작주소, 변경하려는 원소의 범위 종료주소, 변경 값)

 

다만, 종료주소는 변경값에 포함되지 않는다. 일종의 다른 배열에서 그러는 것처럼  열린구간으로 취급해주면 된다.

 

위의 내용을 이용하여 해결해야하는 문제는 다음과 같다.

 

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main(void){
    string input_data;
    cin >> input_data;

    int size_of_string = input_data.size();
    
    // Setting alphabet(Default value is -1)
    int alpha_len = 'z' - 'a';
    int alpha[alpha_len + 1];
    fill_n(alpha, alpha_len + 1, -1);

    // Fill the value
    
    for(int i = 0; i < size_of_string; i++){
        int value = input_data[i] - 'a';
        if (alpha[value] == -1){
            alpha[value] = i;
        }
    }

    // Print the value

    for(int i = 0; i < alpha_len + 1; i++){
        cout << alpha[i] << " ";
    }
    cout << "\n";

    return 0;


}

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.