2009-03-01から1ヶ月間の記事一覧

俺はこの本を楽しみにしていましたよ

きじねこの高木さんの本です。 http://www.kijineko.co.jp/node/444 組込み現場の「C++」プログラミング 明日から使える徹底入門作者: 高木信尚出版社/メーカー: 技術評論社発売日: 2009/03/23メディア: 単行本購入: 3人 クリック: 16回この商品を含むブログ…

リスコフの置換原則違反のような

ちょいと気になったので。 ActionScriptは全く知りません。すびばせん。 たとえば ActionScript の Loader なんかが良い例です。 Loader は DisplayObjectContainer を継承しているので表示ツリーを構成できるはずなのですが、これをやると例外が飛びます( …

配列クラス、capacityが限界のときにpush_backしたらどうするのが正しい?

本当にあった話。 「配列にpush_backしたい」というのは意外と望まれる動作のようだ。 std::vectorでいいじゃん、と思うかもしれないが、vectorじゃ嫌だ、vectotは使えない!!という人がいる。 何故かといえば、vectorはpush_backしてcapacity不足だとアロ…

組込環境でC++を使う際の幾つかの優れた方法

組込環境というのは、メモリが数MBしかなくて(例えば4MB) プログラムのブートサイズにも限界がある環境の事です。 例外をコンパイラオプションでoffにする 「例外を使った方が安全です!!」 という言葉をはねのけて必ず「コンパイラのオプションで」offに…

C++で配列を速くするたった一つの方法

配列を捨てboost::arrayにしてiteratorを使う。 それだけ。 配列よりarrayが速いだと? と思うかもしれないですが、 サイズのでかい配列を走査しているときなどに効くので是非使ってあげてください。 (最適化は必要です)

最近のコンパイラではvectorのiteratorはポインタで実装されていない?

追記: - どうも誤解(こちらの誤読)だった様子。 恐らく多くの実装のiteratorは型としてはiteratorだが、実装上はポインタで成されているため、 最適化の恩恵を受けるとそれはポインタ演算をしていることと等価になる。 要するに、 ++itは、アドレスをイン…

std::vectorはそんなにダメか?

いま、メインでstd::vectorを使っているんですけれども、 「vectorってclearでメモリが解放されないんですよ!!!!」 という話を聴いた。 「シーンを遷移したらメモリの使用量が増えていたのでメモリリークしていると思ったらvectorがpush_backでメモリを…

可能ならば常にiteratorを使おう

だって、速いから。配列なんかよりずっとね。 特にstd::vectorのiteratorや、boost::arrrayのiteratorね! (追記:id:faith_and_brave さんの指摘でbeginやendが「実装上」ポインタになるということを追記しました) ……と、C++漬けの日々ですがSTLもBoostも…