문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들

array와 container들을 초기화시키는 여러가지 방법

게임이 더 좋아 2021. 6. 12. 03:04
반응형
728x170

 

1. fill 함수 - <algorithm> 헤더에 포함

 

특정한 값으로 채우고 싶을 때나 그냥 초기화할 때

fill(시작주소, 끝주소, 넣고싶은 값) 이라고 생각하면 좋다.

void 라 반환값은 없다.

#include <algorithm>    // std::fill
#include <vector>       // std::vector

int main () {
  std::vector<int> myvector (8);                       // myvector: 0 0 0 0 0 0 0 0
  std::fill (myvector.begin(),myvector.begin()+4,5);   // myvector: 5 5 5 5 0 0 0 0
  std::fill (myvector.begin()+3,myvector.end()-2,8);   // myvector: 5 5 5 8 8 8 0 0

  return 0;
}

 

 

만약 배열이라면

fill(arr, arr+4,5) 이런 식으로 넣으면 된다.

 

다차원 배열이라면..?

 채우고자하는 행 수는 -1을 하고 열 수는 그대로 넣는다.

int main() {
    int arr[3][3];
    fill(&arr[0][0], &arr[2][3], -1);

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
}

/////////////////////

-1 -1 -1
-1 -1 -1
-1 -1 -1



2. 전역에 선언

배열은 초기값 0으로 선언됨.

 

 

 

3. 직접 초기값 선언

 

**배열의 크기가 정해져있어야 선언이 가능

vector<int> vec = { -1,-1,-1 };
vector<int> vec(3);

////////// 0을 초기값으로 가짐
0 0 0

 

****

중요한 표현

(크기, 원하는 값)

vector<int> vec(3,-1);

////////////////

-1 -1 -1

 

반응형
그리드형