[C++ in Coding Test] char형 2차원 배열을 같은 값으로 초기화 하는 방법
2024. 6. 5. 16:03ㆍ자료구조 및 알고리즘/C++ 코딩테스트 스킬
728x90
Char형 2차원 배열을 같은 값으로 초기화 하는 방법
예시 시나리오 : char형 2차원 배열의 모든 값을 '$'로 초기화
1. memset 사용하기
memset 함수는 메모리의 내용을 특정 값으로 설정하는 함수로, 2차원 배열 전체를 동일한 값으로 빠르게 초기화할 수 있습니다. 다음은 memset을 사용하는 예시입니다.
#include <cstring> // memset 함수를 사용하기 위해 필요
#include <iostream>
int main() {
const int rows = 5;
const int cols = 10;
char array[rows][cols];
// memset을 사용해 array를 '$'로 초기화
memset(array, '$', sizeof(array));
// 결과 확인
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
std::cout << array[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}
만약 사용법만 알고 싶다면 아래 참고!
#include <cstring> /* for using memset function */
char array[rows][cols];
/* memset을 사용해 array를 '$'로 초기화 */
memset(array, '$', sizeof(array));
2. std:fill을 이용한 char형 2차원 배열 초기화
std::fill은 C++의 알고리즘 라이브러리에서 제공하는 함수로, 범위를 정해 해당 범위를 특정 값으로 채웁니다. 2차원 배열에 std::fill을 사용하려면 배열을 1차원 배열로 취급해야 합니다. 다음은 std::fill을 사용하는 예시입니다.
#include <algorithm> // std::fill 함수를 사용하기 위해 필요
#include <iostream>
int main() {
const int rows = 5;
const int cols = 10;
char array[rows][cols];
// std::fill을 사용해 array를 '$'로 초기화
std::fill(&array[0][0], &array[0][0] + sizeof(array), '$');
// 결과 확인
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
std::cout << array[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}
만약 사용법만 알고 싶다면 아래 참고!
#include <algorithm> /* std:fill을 사용하려면 <algorithm> 헤더를 이용해야 함*/
char array[rows][cols];
/* std:fill을 사용해 array를 '$'로 초기화 */
std::fill (&array[0][0], &array[0][0] + sizeof(array), '$');
2차원 배열에서의 std::fill 사용을 일반화를 하면
std::fill (배열의 시작 주소값, 배열의 시작 주소값 + 배열의 크기, 채우려는 문자);
/* 배열의 시작 주소값은 &배열명[0][0] */
/* 배열의 크기는 sizeof(배열명) */
2차원 배열 자료형에 따른 std::fill을 쓸 때 유의할 점
int형 2차원 배열의 경우 다음과 같이 써야함.
#include <algorithm>
int integer_array[rows][cols];
std::fill(&integer_array[0][0], &integer_array[0][0] + rows * cols, 초기화 값);
그 이유는 대부분의 시스템에서 char형은 1바이트를 차지하고, int의 경우 대부분의 시스템에서 4바이트를 차지해서...
디테일한 설명은 수정 진행 중
[연관글]
- std:fill 사용 방법 link) link 걸어놓을 예정
728x90
'자료구조 및 알고리즘 > C++ 코딩테스트 스킬' 카테고리의 다른 글
[C++ in Coding Test] std::tie 사용 예시 (0) | 2024.06.06 |
---|---|
[fill] fill 함수로 2차원 배열 초기화 (0) | 2024.05.12 |
[memset 함수] memset 함수 주의점 (0) | 2024.04.26 |
[CPP 코딩테스트 Skill] make_pair에 대해서 알아보기 (0) | 2024.03.02 |
[C++ 코딩테스트] pair-단일 객체 이동하기 코드에서 사용된 skill (0) | 2024.03.01 |