-
[C++] memset과 fill의 차이/2차원 배열 초기화 함수Programming/C++ 2020. 5. 2. 15:01
배열 또는 벡터를 초기화할 때 memset과 fill을 자주 사용한다
memset <memory.h>헤더파일을 포함하여 사용한다
memset(배열 이름, 초기화 값, 배열 크기);
( ex. memset(visit, false, sizeof(visit)); )
1바이트 단위로 메모리를 초기화하기 때문에 배열값을 0으로 초기화 할 때 주로 사용한다
하지만 bool형이 아닌 배열을 1로 초기화는 불가능하다
위의 사진처럼, int형은 4바이트 중 1바이트 단위로 1로 초기화하기 때문에
10000000100000000... 이 되어 위와 같은 값이 나온다
그렇기 때문에 bool형 배열 초기화 혹은 0으로 초기화할 때 사용하자
fill <algorithm>헤더파일을 포함하고 std namespace를 사용한다
fill(시작 위치, 끝나는 위치 +1, 초기화 값);
( ex. 배열 크기가 10일 경우 fill(arr, arr+10, 5); )
memset과는 다르게 여러 자료형에 대해 제약없이 사용 가능하다
주로 2차원 배열을 사용하고 그 값을 초기화 할 때가 많은데,
그 때는 fill(&arr[0][0], &arr[ROW -1][COL], value) 형태로 사용해주면 된다!
2차원 배열 초기화 예시:
memset이 fill보다 처리 속도가 빠르기때문에 사용 목적에 따라서 다른 함수를 사용하자😸
'Programming > C++' 카테고리의 다른 글
Vector Capacity를 1.5배씩 늘려주는 이유 (420) 2021.01.05 [C++] Dijkstra Algorithm with Priority Queue (395) 2020.05.07 [STL] vector 생성자, 함수 및 iterator 사용법 (0) 2020.05.01 C/C++ 데이터 형식 범위(int, double, long long 범위) (2) 2020.04.30 C언어 처음 시작하기 (403) 2019.02.03