안녕하세요,
재재입니다.

이번 포스팅은,
c++ 에서 사용하는 abs 에 대해서 알아볼려고 하는데요!
c++ abs vs std::abs 이 둘의 차이에 대해서 한번 자세히 설명해볼게요!

(1) stdlib.h abs

먼저, stdlib.h header 의 abs 함수입니다.

stdlib.h 는 c 언어의 표준 라이브러리입니다.
c 언어 표준 라이브러리에서 사용되는 std::abs 함수는,
정수형 절대값을 계산할 때 사용합니다.

c++ abs vs std::abs
c++ abs vs std::abs (Feat. stdlib, algorithm) 5

함수의 인자는 long long (8 byte 정수형) 변수입니다.

(2) algorithm abs

다음은, algorithm header 의 abs 입니다.

std::abs 함수는 각 타입에 대한 오버로드 함수를 가지고 있습니다.

c++ abs vs std::abs image 80
c++ abs vs std::abs (Feat. stdlib, algorithm) 6

즉, 필요에 따라 함수 오버로드를 통해 타입에 맞는 std::abs 함수를 호출합니다.

(3) cstdlib abs

cstdlib 는 C++ 표준 라이브러리로,
algorithm 의 abs 과 같이 함수 오버로드를 지원합니다.

c++ abs vs std::abs image 81
c++ abs vs std::abs (Feat. stdlib, algorithm) 7

https://en.cppreference.com/w/cpp/header/cstdlib

(4) 결론

각 용도에 맞는 함수를 사용하는 것은 당연하지만,
stdlib.h 를 선언하면서 abs 를 사용하는 것 보다는,

용도나 확장성 측면에서,
Macro 형태로 구현 혹은 C++ 표준 라이브러리를 쓰는 게 좋을 거 같습니다.

같이 보면 좋은 inline function 포스팅도 있습니다.


c++ abs vs std::abs (Feat. stdlib, algorithm)
태그:                     

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다