티스토리 뷰
728x90
백준 10809를 풀다가 c++ 배열 초기화 하는 방법이 헷갈려서 정리해본다.
1. 선언시 초기화
선언시 일일이 지정해준다. 이 경우 지정하지 않은 부분은 기본값(int의 경우 0)이 들아간다.
int arr[3] = {1,2,3};
int arr2[3] = {1}; // 1,0,0으로 초기화 된다.
2. fill_n()
선언한 뒤에 fill_n()함수로 초기화한다. 원하는 개수 만큼 같은 값으로 초기화 할 수 있다.
fill_n( array변수명, 초기화 시킬 값 개수 , 초기화 값 )
int arr[3];
fill_n(arr,3,1); // 1,1,1로 초기화 된다.
int arr2[5];
fill_n(arr2,3,1); // 앞에 3개는 1로 초기화 되지만 나머지 2개는 초기화 되지 않는다.
3. for문
선언한 뒤에 for문으로 초기화
int arr[3];
for(int i=0;i<3;i++){
arr[i] = 1;
}
4. memset()
선언 후 memset으로 초기화 한다. 모두 같은 값으로 초기화 할 수 있다.
컴파일러 마다 차이가 조금은 있지만 memset은 for문으로 초기화 하는 것보다 대체로 빠르다.
memset(array변수명, 초기화값, 배열사이즈);
int arr[3];
memset(arr, 1, sizeof(arr));
참고로 전역변수는 초기화 하지 않아도 자동으로 0으로 초기화 되지만
지역변수는 초기화가 필요하다.
728x90
'C++' 카테고리의 다른 글
[C++] std::ios_base::sync_with_stdio(false); (0) | 2022.02.16 |
---|---|
[C++] 직접 정의한 헤더파일 사용해보기 (네임스페이스와 클래스) (0) | 2022.02.11 |
[C++] 헤더 파일과 네임스페이스 (0) | 2022.02.09 |
[C++] 표준 입력함수와 입력버퍼 관리 : cin / cin.getline / getline / cin.get / cin.fail / cin.clear / cin.ignore (0) | 2022.02.03 |
[C++] 배열 초과 입력에 관하여 (0) | 2022.02.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Winform
- ubuntu
- flutterdoctor
- Flutter
- mac Unity vscode 자동완성
- 트리
- Mac
- =
- ()
- QO
- apt
- DevExpress
- GIT
- 컨셉때문에킹받으셨나요..죄송합니다..제가 봐도 킹받네요
- androidstudio
- mac unity vscode autocomplete
- select
- 버추얼박스
- VS Code
- apt-get
- 해마코딩
- Unity
- Query
- Tree
- Unity vs code
- VirtualBox
- gridContorl
- multiple Column
- 우분투
- DataSource
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
Blog is powered by
Tistory / Designed by
Tistory