2009-01-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で既にメンバ関数テン…
割と経験があり、STL?って思っているようなプログラマが書きそうなArray。 std::vectorはメモリの確保に倍に近くなるようなサイズで保持領域を増やすため、 ページサイズを指定して、その単位のサイズだけ常に伸びるようになっている。 operatorなどの便利メ…
C++は厨二病なので、 テンプレートを憶えたてのプログラマはすぐに 「ぼくがかんがえたさいこうのはいれつ」を書きたがります。 STLがあるじゃん? というと、使いにくいと言います。 で、ぼくがつかいやすいはいれつくらすをかきます、と言い出して配列を書…
全国1,000,000人のSTLファンのみなさんに朗報です。 STLのqueueとかstackとか使いにくくないですか? あれって、中身はlistとかqueueとかvectorのくせに使いにくくないですか? 触れるインターフェイスが少なすぎ、とか思ってないですか? 渡したコンテナを…
と言われたら。 C++ code - 21 lines - codepad class Container { public: ~Container() { printf("Container::~Container()\n"); } }; class Hoge : protected Container { public: }; int main() { Hoge h; Hoge* hoge = new Hoge(); delete hoge; いった…
1.自分でvectorを書く 死亡フラグ。/(^o^)\ イテレータも使えないカスコンテナができる可能性99.9%。 今すぐ死んだ方が良い。 2.STLのvectorをprotected継承してカスタマイズする 例えばこんな感じ。 C++ code - 40 lines - codepad これは最初からres…
こんなんで30分も使ってしまった。 意外と気づかんよね。 class Base { public: virtual void exec(){} }; class Derived : public Base { public: virtual void exec(){ Base:exec(); } }; int main() { Derived d; d.exec(); }
CやC++を使っている際、ある特定のメモリ領域からアロケートしたい、ということがある。 例えばファイルに関するものはファイルアロケータから、とか。 また、デバッグで使うようなメモリならデバッグアロケータから、とか。 Cならmallocとfreeを変えるかフ…
どんなに正しく設計をしたつもりでも、 どこかで必ず「これは設計を直した方がいいのじゃないか?」 と思うことがある。そういうときに聳え立つ「既に書かれたソースたち」。 基本インターフェイスで対話していても 抜本的に手をいれなければならない事もあ…
自分はなかなかとらドラフィーバーから、脱出できずにもがいてます。 あれ、おかしい……、というくらいはまってます。 放送のときにリアルタイムにはまったわけではないのですが、 たまにエピソードを見なおしたり、 キャラクターソングを聴いてしまったり、 …
minekoaさんのエントリを読んでいて、 「そうそう、コンパイラがこんなこと言うときは実際にはあんな事が起きてるんですよ」みたいな知識データベース。そしてコンパイラが検出出来ないタイプのバグについても、現象に「あれ?、どこかでみたぞ、これ」とな…
よくあることなんだけれど、「社内の実績があるコードを使え」と言われて見てみると、 「これはひどい」というコードであることがある。 そういう人が言っている「実績がある」は「製品に使用した事がある」なんだよな。例えばあるデバイスから、非同期で読…
会社でC++の本を積み上げていると明らかに不審者なので、 コソコソと撮ってました。 会社には代表的なものしかおいてないですが、 C++の本が全体の五分の一程度なので、他のを積み上げるとひどいことになります。 よく見ると赤いBoost本や、STL標準講座を取…
C++本16冊すべて届きました - 危ないRiSKのブログ C++本を積んでみた - Faith and Brave - C++で遊ぼう C++ っぽい本を積んでみた - ぐるぐる〜 C++な本たちを積んでみる - みねこあ自分も本を積んでみようかと思ったんですが、殆ど会社なので断念。 殆どが…