C++11講座14回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
第14回は有理数になります。
C++11では有理数を扱うライブラリ<ratio>が追加されました。
1: #include <iostream>
2: #include <ratio>
3:
4: using namespace std;
5:
6: int main()
7: {
8: using a = ratio<3, 5>;
9: using b = ratio<20, 4>;
10:
11: cout << a::num << "/" << a::den << endl;// 3/5
12:
13: cout << b::num << "/" << b::den << endl;// 5/1(自動...
14:
15: //加算
16: using add = ratio_add<a, b>;
17: cout << add::num << "/" << add::den << endl;
18:
19: //減算
20: using sub = ratio_subtract<a, b>;
21: cout << sub::num << "/" << sub::den << endl;
22:
23: //乗算
24: using mul = ratio_multiply<a, b>;
25: cout << mul::num << "/" << mul::den << endl;
26:
27: //除算
28: using div = ratio_divide<a, b>;
29: cout << div::num << "/" << div::den << endl;
30:
31: return 0;
32: }
生成の仕方は
ratio<分子, 分母>
基本的にnum、denはstaticメンバ変数なので、クラスのインス...
また、13行目に書いている通り、gcd(最大公約数)を利用して約...
C++11講座11回で紹介した<chrono>と合わせることも可能です。
1: #include <iostream>
2: #include <ratio>
3: #include <chrono>
4:
5: using namespace std;
6:
7: int main()
8: {
9: using meter = chrono::duration<long long, ratio<1, 1...
10: using milli_m = chrono::duration<long long, milli>;
11:
12: milli_m a{ 10000 };//10'000mm
13: meter b{ 1 }; //1m
14:
15: //mm -> m
16: cout << a.count() << "[mm] = " <<chrono::duration_ca...
17:
18: //m -> mm
19: cout << b.count() << "[m] = " << chrono::duration_ca...
20:
21: return 0;
22: }
chronoと組み合わせることにより、独自の単位の型を定義する...
ちなみに10行目のmilli型はratioで定義されており、他にも以...
namespace std {
typedef ratio<1, 1000000000000000000000000> yocto;
typedef ratio<1, 1000000000000000000000> zepto;
typedef ratio<1, 1000000000000000000> atto;
typedef ratio<1, 1000000000000000> femto;
typedef ratio<1, 1000000000000> pico;
typedef ratio<1, 1000000000> nano;
typedef ratio<1, 1000000> micro;
typedef ratio<1, 1000> milli;
typedef ratio<1, 100> centi;
typedef ratio<1, 10> deci;
typedef ratio< 10, 1> deca;
typedef ratio< 100, 1> hecto;
typedef ratio< 1000, 1> kilo;
typedef ratio< 1000000, 1> mega;
typedef ratio< 1000000000, 1> giga;
typedef ratio< 1000000000000, 1> tera;
typedef ratio< 1000000000000000, 1> peta;
typedef ratio< 1000000000000000000, 1> exa;
typedef ratio< 1000000000000000000000, 1> zetta;
typedef ratio<1000000000000000000000000, 1> yotta;
}
※yocto、zepto、zetta、yottaはintmax_t型で値を表現出来る場...
以上でC++11の有理数の説明を終わります。
前→C++11講座13回
次→C++11講座15回
#vote(菅野美穂[0],缶飲み放[0],やんほぬ[0])
終了行:
第14回は有理数になります。
C++11では有理数を扱うライブラリ<ratio>が追加されました。
1: #include <iostream>
2: #include <ratio>
3:
4: using namespace std;
5:
6: int main()
7: {
8: using a = ratio<3, 5>;
9: using b = ratio<20, 4>;
10:
11: cout << a::num << "/" << a::den << endl;// 3/5
12:
13: cout << b::num << "/" << b::den << endl;// 5/1(自動...
14:
15: //加算
16: using add = ratio_add<a, b>;
17: cout << add::num << "/" << add::den << endl;
18:
19: //減算
20: using sub = ratio_subtract<a, b>;
21: cout << sub::num << "/" << sub::den << endl;
22:
23: //乗算
24: using mul = ratio_multiply<a, b>;
25: cout << mul::num << "/" << mul::den << endl;
26:
27: //除算
28: using div = ratio_divide<a, b>;
29: cout << div::num << "/" << div::den << endl;
30:
31: return 0;
32: }
生成の仕方は
ratio<分子, 分母>
基本的にnum、denはstaticメンバ変数なので、クラスのインス...
また、13行目に書いている通り、gcd(最大公約数)を利用して約...
C++11講座11回で紹介した<chrono>と合わせることも可能です。
1: #include <iostream>
2: #include <ratio>
3: #include <chrono>
4:
5: using namespace std;
6:
7: int main()
8: {
9: using meter = chrono::duration<long long, ratio<1, 1...
10: using milli_m = chrono::duration<long long, milli>;
11:
12: milli_m a{ 10000 };//10'000mm
13: meter b{ 1 }; //1m
14:
15: //mm -> m
16: cout << a.count() << "[mm] = " <<chrono::duration_ca...
17:
18: //m -> mm
19: cout << b.count() << "[m] = " << chrono::duration_ca...
20:
21: return 0;
22: }
chronoと組み合わせることにより、独自の単位の型を定義する...
ちなみに10行目のmilli型はratioで定義されており、他にも以...
namespace std {
typedef ratio<1, 1000000000000000000000000> yocto;
typedef ratio<1, 1000000000000000000000> zepto;
typedef ratio<1, 1000000000000000000> atto;
typedef ratio<1, 1000000000000000> femto;
typedef ratio<1, 1000000000000> pico;
typedef ratio<1, 1000000000> nano;
typedef ratio<1, 1000000> micro;
typedef ratio<1, 1000> milli;
typedef ratio<1, 100> centi;
typedef ratio<1, 10> deci;
typedef ratio< 10, 1> deca;
typedef ratio< 100, 1> hecto;
typedef ratio< 1000, 1> kilo;
typedef ratio< 1000000, 1> mega;
typedef ratio< 1000000000, 1> giga;
typedef ratio< 1000000000000, 1> tera;
typedef ratio< 1000000000000000, 1> peta;
typedef ratio< 1000000000000000000, 1> exa;
typedef ratio< 1000000000000000000000, 1> zetta;
typedef ratio<1000000000000000000000000, 1> yotta;
}
※yocto、zepto、zetta、yottaはintmax_t型で値を表現出来る場...
以上でC++11の有理数の説明を終わります。
前→C++11講座13回
次→C++11講座15回
#vote(菅野美穂[0],缶飲み放[0],やんほぬ[0])
ページ名: