« [備忘録 / .NET] Programming with PLINQ | トップページ | [ Office / WebApp ] ZOHO work online »

2007/11/27

[備忘録 / C++] C++ の map は Python の辞書オブジェクトに近い

A map is a container that stores pairs of keys and values. Looking up keys, inserting keys, and deleting keys can all be performed in logarithmic or better time. Maps support bidirectional iterators (no random access). In other languages and libraries, maps are also called dictionaries and associative arrays.

( C++ in a Nutshell, Oreilly & Associates Inc )

とあるように、C++ の map は「他の言語では辞書とか連想配列と呼ばれている」ものらしい。
こう説明されているとすっきり理解できるね。比喩は偉大だ。

で、multimap はというと

The multimap class template represents a map container that can store duplicate keys.

( C++ in a Nutshell, Oreilly & Associates Inc )

ということで、key の重複が許される map らしい。key の重複が許される点が Python の辞書と異なる。map も multimap も key に直接変更を加えることはできず、変更するときはいったん削除 ( erase ) してから変更したものを挿入 ( insert ) する必要がある。

A map's iterators are bidirectional. They return value_type references; use the first member to access the key or second to access the associated object.

( C++ in a Nutshell, Oreilly & Associates Inc )

map オブジェクトのそれぞれの要素の key にアクセスするには、それぞれの要素へのイテレータを取得してそのイテレータの first メンバ変数を使う。values にアクセスするには second メンバ変数を使うらしい。イテレータは find メソッドとかの戻り値として取得できる。

ところで何ゆえにわたしは C++ なんぞやっているんだろう。
他にやりたいことがたくさんあるのに。

最後に一言言わせてもらうとだ、「グローバル書き換えまくりプログラミングは最悪だ」。

|

« [備忘録 / .NET] Programming with PLINQ | トップページ | [ Office / WebApp ] ZOHO work online »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/103108/17203669

この記事へのトラックバック一覧です: [備忘録 / C++] C++ の map は Python の辞書オブジェクトに近い:

« [備忘録 / .NET] Programming with PLINQ | トップページ | [ Office / WebApp ] ZOHO work online »