読者です 読者をやめる 読者になる 読者になる

C/C++

MPFR を使ってみる

参考 GNU MPFR 3.1.5高精度の計算が必要になったので MPFR を使ってみた。 GMP を土台に初等関数を定義してあるので、素で GMP を使うよりは便利かと思う。2 の平方根を 200桁求めてみる。最後の一桁を丸めるのに MPFR_RNDN (近いほうの値、誤差は 10^(-n) *…

c++ で多値を返す

参考1 Returning multiple values from a C++ function - Stack Overflow 参考2 std::tie - cppreference.com多値を返すには std::tuple を使うと良い。(参考1には pair を使うなどの意見もある)std::make_tuple で tuple を作る std::get で要素にアクセ…

(自作)動的ライブラリのリンク方法

調べたら何通りか方法があるようなので忘れないようにメモしておく。 自作ライブラリの名前は libhoge.so としてカレントディレクトリにあるとする。 1 直接ファイルを指定 gcc program.c ./libhoge.so -o program 2 -L, -l, -Wl,-rpath オプションを使う gc…

c++ で println もどきを書く

この記事では c++11 の機能を使っています。参考記事 java - System.out.println function syntax in C++ - Stack Overflowちょっとした値を書き出すのも c/c++ だと面倒なことが多いので 他の言語にあるような簡単な出力関数が欲しいと思っていて上の記事を…

ビットシフト

とくに意味はなく視覚的に安心したいのでメモ "x >> 1" は x を 2^1 で割った商 0 >> 1 = 0 1 >> 1 = 0 2 >> 1 = 1 3 >> 1 = 1 4 >> 1 = 2 5 >> 1 = 2 6 >> 1 = 3 7 >> 1 = 3 8 >> 1 = 4 9 >> 1 = 4 10 >> 1 = 5 11 >> 1 = 5 12 >> 1 = 6 13 >> 1 = 6 14 >> …

vector の要素削除とシャッフル

追記、修正ありベクトルvのn番目の要素を削除 v.erase(v.begin()+n);ベクトルvから特定の要素を全て削除、ここではvは整数のベクトルとし3を削除するとする。 std::vector<int>::iterator it = remove(v.begin(), v.end(), 3); v.erase(it, v.end());追記 remove </int>…

cc-mode のインデント調整

最近ご無沙汰なので一つc,c++のインデントで for (i=0;i<10;i++) { }とか、インライン関数の class hoge { hoge() { } };となるのを for (i=0;i<10;i++) { }のように変更する設定 (setcdr (assoc 'inline-open c-offsets-alist) 0) (setcdr (assoc 'substate…