STL使ってみるか…

仕事で使ってるJavaScriptはオブジェクト全てが連想配列で実現されてるとか、聞くだに恐ろしげな仕様なんですが、使ってみるとなかなかに便利なものです。連想配列とは…一般的な配列は添え字に整数をとりますが(例:Array[8]=0)、添え字を任意のオブジェクトに拡張したもの…と云ったらよいか。任意のオブジェクト…つうか、実用上は文字列が添え字になるパタンがほぼ全てなんです(例:Array["本日は晴天なり"]=31)。ハッシュテーブルとかよく呼ばれますが、連想配列が多くの場合ハッシュテーブルを用いて実装されるから、と云うことなので、「連想配列」、と呼ぶ方が好きですね。まー何というか、ハッシュだと理論上O(1)で検索可能とか嘘くさい特徴があんまり使う気がしないのですが、まあ、ゲームでもメインループ前の初期処理時には便利だしドシドシ使いましょう!と云うところですか。メインループでガシガシ使ってるひとっていらっしゃいます?

そんなわけで連想配列組み入れてみましょう。とはいえ、双方向リストとかなんかとか、いい加減汎用的なデータ構造をフルスクラッチしまくる人生も宜しくないと考え、ついにSTL導入に踏みきってみましょう!…つうか、今更STLとかアホか?みたいな。つーか、仕事でC++使ったことないし、何やってるんでしょうね…。

STLで連想配列はstd::mapなんですって。非標準のhash_mapの方が早いとか云う話も見ましたが、まあ速度は問わないので気にしないでおきましょう。

    std::map< std::string, std::string > tmpMap;

    tmpMap["hoge"] = "Hello! Hoge!";

これは便利だー。本当はtmpMap.Insert()とかアクセスするらしいんだけど、map[]でオーバーロードしてるのね。この辺がC++の便利なところで恐ろしいところ。たまらないぜ!

あと、定義するときに色々指定できるみたいですがー。アロケータとかよくわかんね。