Memset()은 C++ 함수입니다. 지정된 횟수만큼 단일 문자를 객체에 복사합니다. 특정 메모리 위치에서 시작하여 주어진 값으로 여러 바이트를 채우는 데 유용합니다. 이는 다음에서 정의됩니다. 헤더 파일.
통사론:
void* memset( void* str, int ch, size_t n);>
멤셋() ch 값을 unsigned char로 변환하고 이를 str[]이 가리키는 객체의 처음 n 문자 각각에 복사합니다. 객체가 쉽게 복사할 수 없는 경우(예: 스칼라, 배열 또는 C 호환 구조체) 동작은 정의되지 않습니다. n이 str이 가리키는 객체의 크기보다 크면 동작이 정의되지 않습니다.
매개변수:
- 문자열[]: 문자를 복사할 개체에 대한 포인터입니다.
- 채널: 복사할 문자입니다. 문자, 일반 값 및 부울 값일 수 있습니다.
- N: 복사할 바이트 수입니다.
반환 값: memset() 함수는 대상 문자열에 대한 포인터인 str을 반환합니다.
시간 복잡도: O(N) [객체의 처음부터 끝까지 트래버스하는 경우]
보조 공간 복잡성: 오(1)
예:
C++
// C++ program to demonstrate memset> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> >char> str[] =>'geeksforgeeks'>;> >memset>(str,>'t'>,>sizeof>(str));> >cout << str;> >return> 0;> }> |
>
>산출
tttttttttttttt>
메모: 정수 데이터 유형에 대해 모든 값을 0 또는 -1로 설정하기 위해 memset()을 사용할 수도 있습니다. 다른 값으로 설정하는데 사용하면 작동하지 않습니다. 이유는 간단합니다. memset은 바이트 단위로 작동합니다.
자바 설정
C++
// C++ Program to demonstrate that we can use memset() to> // set all values as 0 or -1 for integral data types also> #include> using> namespace> std;> // Driver Code> int> main()> {> >int> a[5];> >// all elements of A are zero> >memset>(a, 0,>sizeof>(a));> >for> (>int> i = 0; i <5; i++)> >cout << a[i] <<>' '>;> >cout << endl;> >// all elements of A are -1> >memset>(a, -1,>sizeof>(a));> >for> (>int> i = 0; i <5; i++)> >cout << a[i] <<>' '>;> >cout << endl;> >// Would not work> >memset>(a, 5,>sizeof>(a));>// WRONG> >for> (>int> i = 0; i <5; i++)> >cout << a[i] <<>' '>;> }> |
>
>산출
0 0 0 0 0 -1 -1 -1 -1 -1 84215045 84215045 84215045 84215045 84215045>
부울 예:
C++
// C++ Program to demonstrate that we can use memset() to> // set all values as boolean data types also> #include> using> namespace> std;> int> main()> {> >bool> prime[5];> >memset>(prime,>true>,>sizeof>(prime));> >// If you print without using boolalpha it will print> >// like this> >for> (>int> i = 0; i <5; i++)> >cout << prime[i] <<>' '>;> >cout <<>'
'>;> >// If you use boolalpha it will print like this> >for> (>int> i = 0; i <5; i++)> >cout << boolalpha << prime[i] <<>' '>;> >return> 0;> }> // This code is contributed by Susobhan Akhuli> |
>
>산출
1 1 1 1 1 true true true true true>
메모: 부울의 경우 개체는 C++의 부울 유형이어야 합니다. 예. bool arr[n];
memset( ) 함수의 장점
1. 가독성 향상
주요 목적 멤셋() 함수는 전체 문자열의 각 문자를 특정 문자로 변환하는 것입니다. 정수 값을 입력으로 전달하기 전에. 한 줄의 코드로 되어 있어 매우 컴팩트하고 전체적으로 가독성이 향상됩니다.
2. 코드 줄 줄이기
이를 활용하여 힘든 기술보다 동일한 작업이 더 빠르게 수행되었습니다. 멤셋() 문자열의 각 문자 값을 할당하고 변환하기 위해 불필요한 루프를 사용하는 대신 입력만 허용하는 함수입니다. 정수 값.
3. 더 빠르다
이것을 이용하면 시간이 많이 걸리는 방식이 아닌 동일한 작업이 빠르게 완료되었습니다. 멤셋() 함수의 입력만으로 각 문자의 값을 할당하고 변환하기 위해 불필요한 루프가 필요하지 않습니다. 끈 에 정수 값.
4. 정렬 불량 문제를 제거하는 데 유용합니다.
C++ 멤셋() 기능은 프로그래머가 정렬 문제를 해결하는 데 도움이 됩니다. 프로세서에서 데이터 정렬에 문제가 있어 프로그래밍 실수가 발생하는 경우가 있습니다. 그만큼 memcpy() 그리고 memcmp() C++의 메서드는 이 상황에서 가장 좋은 옵션입니다.
메모: memset은 C에서 상속된 오래된 함수입니다. 다양한 데이터 유형과 값으로 메모리를 채울 때 유연성이 떨어집니다. 그만큼 표준::채우기 함수는 STL 알고리즘 라이브러리에서 사용할 수 있는 더 나은 대안입니다.