2009-12-01から1ヶ月間の記事一覧
このように数多くのプログラマが「車輪の再発明」の罠に悩まされているのですが,車輪の再発明(より正確に言うと,車輪の再実装)にはそれなりに意義もあります. 車輪の再実装 - Life like a clown id:tt_clownさんの反応に対してですが、 まず、自分も「…
最近こんなやりとりがあった。 「Cって標準のコンテナ(双方向リストや可変長配列など)がなくて不便。 Cのプロジェクトってコンテナ自体ないこともあるし、コンテナがないとプログラムって書きにくいよね。 その点C++はSTLが(ry」 ... 「コンテナ? STL“も”…
なんだってー!!!!(;゚д゚) (゚д゚;(゚д゚;) いや、過言かもしれませんが、C++の存在がdlmallocを書く切っ掛けになったのは確かです。 dlmallocは現在はLinuxなどのデフォルトのmalloc実装ではありませんが、 dlmallocは本当に優れたアルゴリズムを持って…
前のエントリで線形探索のメモリアロケータは駄目だ駄目だ、と言いました。 で、まず線形探索の何が駄目って、メモリは以下のようになっています。 最初は「未使用領域(青)」しかありません。ここからどう領域をとっても良いです。 ただ、使っていくうちに…
前置き。dlmallocについて書くぞ!と言っておいて書いてなかったので。orz...すみません。 あろけーたをじぶんでかいてはいけません!! なぜ、って大抵糞だからです。 例えば、こんな管理構造を持ったアロケータをよく見るんですが、 typedef struct _Alloc…
静的解析ツールって商用のものだと結構あるわけですが、 まぁ、基本的にこんなツールは有用性を示してもぽんぽん買ってもらえる訳もないので オープンソースに依存するわけです。 で、C++ならSourceForge.net: cppcheck かなあと思ってプロジェクトにかけて…
Cクイズ こっちわからん>< - So Many People, So Many Different Ideas /* MyTypeの定義 */ void set(MyType m, int val); void inc(MyType m); void print(MyType m); int main(void) { MyType m; set(m, 0); /* mを0にセット */ inc(m); /* mをインクリ…
元々は 今日の仕組まれたバグ こちらを見たときにずっと書こうと思っていたネタです。 num が 1 の状態でしか確認されてなくて、いざ使うことになって2以上にした途端に Segmentation fault するとか嫌がらせだろw ただの凡ミスなんだろうけど、なんかテス…
ムーブセマンティクスについて調べたところで自分が気になったこと。 BigFatMovableObject GetBigFatMovableObject() { BigFatMovableObject mo; return mo; } int main() { BigFatMovableObject mo(GetBigFatMovableObject()); return 0; } 最初、自分はこ…
いよいよ、右辺値参照とは何か、ということです。 ムーブコンストラクタと、コピーコンストラクタの話を前にしました。 ここで、 ムーブコンストラクタを持つオブジェクトは「移動可能オブジェクト(movable object)」である。 コピーコンストラクタを持つオ…
ということで、再びBoost.Containerに戻ってきました。 (コピーコンストラクタと、ムーブコンストラクタについてよくわからない場合は前の記事へ) ムーブセマンティクスに対応する、というのはどういうことかを考えます。 では、ムーブコンストラクタに対…
まずムーブセマンティクスとは何か、ということは忘れます。 C++における「オブジェクトのコピーと移動」について考えます。 C++にはオブジェクトに対して「コピー」と「移動」という概念があります。 一般的なのは「コピー」です。 お馴染みの「コピーコン…
id:melponさんに教えて頂いた Boost.Containers を軽く試します。 Boost.Containerライブラリは、STLコンテナを含むいくつかの有名なコンテナを実装します。 このライブラリの目標は、標準コンテナにないもの、あるいはC++03のコンパイラで最新の標準ドラフ…
書くの遅れましたが、^_^; いろんなC++な話に触れて凄く勉強になり、刺激になりました。 とても素敵な勉強会でした。 次もまた行きたい!! 誰が誰だかわからなくておろおろしてたのは内緒です。 スピーカーの皆様、参加された皆様、本当にお疲れ様でした!B…
C++でiteratorを使う時にありがちな不可解バグとして「イテレータを走査中にイテレータが破壊される操作を行う事で不可解な挙動を示す」ことがあげられる。 例えばvectorのiteratorを走査中には追加や削除を行ってはいけない。 これはポインタを利用したvect…
C++に慣れている人にとっては考えもつかないことですが、 クラスをコンテナにいれる、ということを試したくなる時期があります。 コンテナにクラスのポインタをいれるとポインタ管理が面倒だし、 クラスの実体をいれておいたら便利じゃない? というのがその…
元ネタ:C++ よりも C# よりも Java でゲームを作ると良い 8 の理由と、悪いほうの 8 つの理由 (大嘘) - ぐるぐる〜1.STL が便利 VC6はメンバ関数テンプレートが実装されていなかったVC4~VC5までの呪いを受けているのでSTLが変。 VC6.0で既にメンバ関数テン…