タグ

STLに関するnsyeeのブックマーク (2)

  • STL風に使えるマップ型コンテナの紹介と性能比較 - Preferred Networks Research & Development

    最近スマートフォンに乗り換えました。徳永です。 C++は世に数あるプログラミング言語の中では比較的メモリをわない方ですが、それでもメモリ使用量が問題となる場合はあります。そのような場合の対処方法はいくつか有りますが、手軽に選択できる方法として、今日はSTLのmapやunordered_mapと同じ感じで使えるデータ構造をいくつか紹介したい思います。 以下、計算量の表記をする際には、要素数をnとします。 Loki::AssocVector LokiはModern C++ Designというの作者であるAndrei Alexandrescuが開発したライブラリです。AssocVectorはその中の一つとして提供されているクラスで、vector<pair<key, value> >という型のベクターをkeyでソートした状態で持つ事により、二分探索による要素の探索を可能にしたデータ構造です。こ

  • 文字列リテラルをstd::stringに渡したときのがっかり感 - 名古屋313の日記

    C++ | 00:01C++で文字列型といえば定番のstd::stringですが、CAPIなんかだと未だにconst char *を使わなければいけません。それどころか現行C++では、fstream系ではconst char *しか使えません。この手のAPIをラップする関数を作る時、文字列として受け取る型はconst std::string &にするか、const char *の二択になるわけですが、const std::string &の方が色々扱いやすい分こちらを引数の型として問答無用で採用したいところです。しかし文字列リテラルを渡す時にはわざわざstd::stringに変換されるという無駄が発生してしまいます。しかも中でCAPIに渡すわけですから、折角std::stringに変換したのに内部でc_strを呼び出してconst char *に戻すなど二重の無駄です。この無駄がどれくらい

  • 1