C++

メモ

C++

整数解を求める問題で、浮動小数点数だとわりと簡単に近似解が求まるとき まず浮動小数点数で大雑把に近似解を求める 次に、大雑把に求めた解の周辺の整数を探索 という戦略が役に立つことがままある。 でかい数字を相手にする場合、近似解を単にintに丸める…

fgets と getline

C++

stream 慣れない。。 C++er には常識なんだろうけど、一応メモ。 fgets(buf, sizeof buf, fp) は改行文字とNULL文字('\0')を含めて buf に sizeof buf バイト 書き込む。 つまり実質 sizeof(buf) - 2 = strlen(buf)-1 バイトの文字列を得ることができる。 is…

数値

C++

double は超でかい数字まで扱える。(1.7e+308 ぐらい)double x に対し、scanf("%lf", &x) や cin >> x で、普通に "46215734612859298473242134234352452346" のような整数を数値として読み込める。double つえー。

STLでの降順ソート

C++

sort(hoge.begin(), hoge.end(), greater<int>()); よりも sort(hoge.rbegin(), hoge.rend()); の方が良さげ。 中身の型に依存せずに書ける。 greater か less かで迷わない。 短いは正義(笑)</int>

unsigned の罠。

C++

size() と比較する時に出るwarningが嫌なので、ループカウンタで int ではなく size_t を使うのを習慣にしてたらデクリメントしていく時に嵌った。 vector<int> v = ...; for (size_t i = v.size()-1; i >= 0; --i) { ... } とか書いてしまうと、i は当然負になら</int>…

Java プログラマのための C++ メモ

言うほど大げさなものでは無いのですが、最近 C++ を触ってて思ったことをまとめていみました。数あるオブジェクト指向言語の中でもC++独特の仕様というのは結構あって、その中でも特に面倒だと思ったものを挙げます。単なる構文的な話題については触れませ…

純粋仮想関数

C++

最近、一年ぶりぐらいにC++を触っていて、いろいろ悲鳴をあげています。 C++の文法はかなりうろ覚えでコンパイルエラーの度に一つずつ思い出していくといった状況なのですが、 次のようなリンクエラーの原因が分からずに途方に暮れてました。 % g++ -Wall ma…