(C++ STL) chrono : ratio(분수사용하기)

Posted by : at

Category : Cpp


// 내부구현은 이렇고
template<intmax_t _Nx, intmax_t _Dx = 1>
struct ratio
{
    static constexpr intmax_t num = _Nx;
    static constexpr intmax_t den = _Dx;

    typedef ratio<num, den> type;
};
// 실사용은 이렇게 하자.
#include <iostream>
#include <ratio>
using namespace std;

int main()
{
    ratio<2, 4> r1;     // 2/4 = 1/2

    cout << r1.num << endl;     // 1
    cout << r1.den << endl;     // 2

    cout << ratio<2, 4>::num << endl;   // 1
    cout << ratio<2, 4>::den << endl;   // 2

    cout << sizeof(r1) << endl;     // empty (컴파일 시간에 출력하기에 메모리를 따로 갖지 않는다.)
}

간단한 연산도 가능하다

#include <iostream>
#include <ratio>
using namespace std;

int main()
{
    ratio_add<ratio<1,4>, ratio<2,4>> r2;

    cout << r2.num << endl;
    cout << r2.den << endl;
}

단위 연산도 제공

milli m;
kilo k;

cout << k.num << endl;      // 1000
cout << k.den << endl;      // 1

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links