Page 146

이 장에서는 C++ 표준 라이브러리의 기능에서 별도의 장을 할애하기 애매한 것들을 모아서 소 개한다.

20.1 ratio 라이브러리 ratio 라이브러리를 이용하면 유한 유리수 finite rational number 를 컴파일 시간에 정확히 표현할 수 있다. 유리수(분수)는 다음 절에서 설명할 std::chrono::duration 클래스에서 사용된다. 이 라이브러리에 관련된 내용은 모두 <ratio> 헤더 파일의 std 네임스페이스 아래에 정의돼 있다. 유리수를 구성하는 분자와 분모는 std::intmax_t 타입의 컴파일 시간 상수로 표현한다. 이 타 입은 부호 있는 정수 타입으로 최댓값은 컴파일러마다 다르다. 여기서 제공하는 유리수는 컴파 일 시간에 결정되기 때문에 다른 타입에 비해 사용법이 다소 복잡해보일 수 있다. ratio 객체를 정의하는 방식은 일반 객체와 다르다. 메서드를 호출할 수 없으며 타입 앨리어스처럼 사용해야 한다. 예를 들어 1/60이라는 유리수(분수)를 컴파일 시간 상수로 선언하면 다음과 같다. using r1 = ratio<1, 60>;

r1 유리수의 분자와 분모는 컴파일 시간 상수이며, 다음과 같이 접근한다.

intmax_t num = r1::num; intmax_t den = r1::den;

다시 한 번 강조하면 ratio는 컴파일 시간 상수 compile-time constant 라서 분자와 분모가 컴파일 시 간에 결정된다. 따라서 다음과 같이 작성하면 컴파일 에러가 발생한다. intmax_t n = 1; intmax_t d = 60; using r1 = ratio<n, d>; // 에러

여기서 에러가 발생하지 않게 하려면 n과 d를 상수로 만든다.

964 3부 전문가답게 C++ 코딩하기

Profile for 한빛미디어

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...