Page 16 -
P. 16
알고리즘의 활용 범위는 매우 넓다. 원소를 검색하거나 개수를 셀 수도 있고, 범위를 찾을 수도 있
으며, 원소끼리 비교하거나 변환할 수도 있다. 컨테이너에서 원소를 생성하거나 교체하거나 제거
하는 알고리즘도 있다. 당연히 정렬(sort), 순열(permute), 분할(partition)하는 알고리즘도 있고, 컨
테이너에서 최대 원소와 최소 원소를 구하는 알고리즘도 있다. 또한, 콜러블(callable)이나 함수 오
브젝트, 람다 함수 등으로 커스터마이즈(customize)할 수도 있다. 콜러블은 원소 탐색이나 변환에
대한 특수한 기준을 제공한다. 이를 사용하면 알고리즘을 더욱 강력하게 만들 수 있다.
1.2.3 수치 연산
C++가 제공하는 수치 연산 관련 라이브러리는 두 가지다. 하나는 무작위수 라이브러리이고, 다
른 하나는 C에서 물려받은 수학 함수다.
무작위수 라이브러리(random number library)(난수 라이브러리)는 두 부분으로 구성된다. 하나는
무작위수 생성기(random number generator)(난수 생성기)이고, 다른 하나는 생성된 무작위수의 분
포에 대한 것이다. 무작위수 생성기는 최댓값과 최솟값 사이에 있는 일련의 무작위수를 생성한다.
이렇게 생성되는 무작위수는 특정한 분포를 따른다.
C++는 C로부터 수많은 표준 수학 함수(mathematical standard function)를 물려받았다. 예를 들어
로그 함수와 지수 함수, 삼각 함수 등이 있다.
1.2.4 텍스트 처리
C++는 텍스트 처리를 위해 스트링과 정규 표현식에 관련된 두 가지 강력한 라이브러리를 제공
한다.
std::string은 텍스트 분석과 수정에 관련된 메서드를 다양하게 제공한다. 문자에 대한 std::
vector와 공통점이 많기 때문에 STL 알고리즘을 std::string에도 사용할 수 있다. std::string은
C의 스트링을 좀 더 쉽고 안전하게 사용하도록 확장한 것이다. C++ 스트링은 메모리를 직접 관
리한다.
std::string과 달리 std::string_view는 복사 연산이 가볍다. std::string_view는 std::string
에 대한 비소유 레퍼런스(non-owning reference)다.
32
c++_06.indd 32 2021-11-19 오전 9:25:42