STLと一口に言っても、世の中にはいくつも亜流があります。僕が知ってる有名どころ
は
・STLport
・Boost
・Dinkum Standard Library
です。みなさん、どれを使われてますか?
僕はSTLportです。
・VC++6時代、標準添付のSTL(Dinkum Standard Llibrary)
を最初に使ったが、Debugビルドで文法エラーが多発した。
それの調査にえらい時間を食って嫌になった。
(原因は#define DEBUG_NEWがらみだった)
で、たまたまSTLportを無料で使える事を知り、使ってみたら上記のような
妙な問題は消えた。しかもバージョンアップも無料。
・ http://www.s34.co.jp/cpptechdoc/article/hash/index.html
のベンチマーク結果を見て、STLportが一番だった。
部分的な性能検査だけだが、拡大解釈しSTLportは総合的に一番
速いのかもしれないなあとした。
のがそのわけです。
最近はBoostにちょっと惹かれています。どっちがいいのかなあ。速度が速い方がい
いなあ。
BoostはSTLではありません。
あれ?そうなんですか?もしかしてSTLを内包したライブラリって感じですか?
それに関するYes/Noだけでいいから教えて下さい~。お願いします。
何かの情報で、C++標準化委員の何人かが開発に加わってるという話を聞きました。
って事は、Boost特有の便利な機能を、その人達がISOにプッシュしたりするんじ
ゃないかなー、と思ってみたり。
なら、「今からBoost入れとっか?」と思ったんです。
ああ、あとεπιστημηさんはどれを使われているのでしょうか?
度々すいません。
使い分けている方もいらっしゃると思います。
そういう方は「どれが最も良かったか?」を聞かせて頂けると幸いです。
特に速度に関して興味があります。
自分でも調べようと思いますが、先人の経験談を少しでも頂けたら嬉しいなあと思い質問
させて頂きました。宜しくお願いします。
NO です。
STL も内包してません。STL を補完するような便利な機能とかはありしますけど、
基本的に boost は STL とは独立した別機能群です。
とりあえず使ってみてまず損はないと思いますけど>boost
> あれ?そうなんですか?もしかしてSTLを内包したライブラリって感じですか?
> それに関するYes/Noだけでいいから教えて下さい~。お願いします。
内包していません。 STLでは物足りないと感じた猛者連中が'追加'したものの集合体です。
> って事は、Boost特有の便利な機能を、その人達がISOにプッシュしたりするんじ
> ゃないかなー、と思ってみたり。
C++標準化委員会のメンバとしてお答えします。その通りです。
Boostの正規表現(regex)を標準C++ライブラリに組み入れようかという
動きがあります。
>「今からBoost入れとっか?」と思ったんです。
「STLとBoost入れとっか?」と思ってください。
> ああ、あとεπιστημηさんはどれを使われているのでしょうか?
いろいろ。GCC/C++Builder/VC++ それぞれ異なるSTL実装ですから。
STLが既に扱っている機能は、Boostは触れてないのですね。
STLに無い機能を加速、追加したライブラリがBoostであると。
また僕の誤りが修正されました。ありがとうございました。
となると僕の知ってるSTLは、ディンカムとSTLportだけになってしまうなあ。
では仕切りなおしを。
この二つ(或いはみなさんが御存知のSTL)では、どれをお好みですか?
>C++標準化委員会のメンバとしてお答えします。
なぬっ!?びっくり仰天、参りました。って事は文字列処理の標準化に大きく関われてい
るのですね。凄いなあ。恐れながら一つ伺っていいでしょうか?日本人の標準化委員って
何人ぐらいいらっしゃるんでしょうか?
>「STLとBoost入れとっか?」と思ってください。
了解です。どうも有難う御座いました。でもBoost入れると勉強が必要だな
あ...。
#そんな事いってちゃだめだ!
>いろいろ。GCC/C++Builder/VC++ それぞれ異なるSTL実装ですから。
そういえばGNUのSTLを忘れてました。これも独自の実装なのでしょうねえ。
Builderに標準添付のSTLは 確かSTLportでしたね。
どれも似たり寄ったりなのかなあ。STLportに軍配が上がると思ってました。
引き続き 皆さんの経験談をお待ちしております~。
>>C++標準化委員会のメンバとしてお答えします。
> なぬっ!?びっくり仰天、参りました。って事は文字列処理の標準化に大きく関われてい
> るのですね。
確かに string/stream関係は日本が貢献しましたが、あくまで個人として、です。
標準化委員会はC++の言語/ライブラリの全域に亘ってreviewします。
> 凄いなあ。恐れながら一つ伺っていいでしょうか?日本人の標準化委員って
> 何人ぐらいいらっしゃるんでしょうか?
えーと、10名以下ですね。
> そういえばGNUのSTLを忘れてました。これも独自の実装なのでしょうねえ。
GNUのはおそらくSGI版がベースです。
独自といえば独自ですが、元をただせばルーツはひとつ。
どのSTLも元はHewlettPackardの実装です。
> Builderに標準添付のSTLは 確かSTLportでしたね。
ちょっと前なら(今でも?) Rogue Wave のSTLも納められているはず。
επιστημηさん、標準化委員会の方だったんですか…
道理で詳しいわけだ…
ぐぐってみると、resursion software の Standard ToolKit ってのが出てきました。
この会社、昔は ObjectSpace って名前だったんでしょうか。
ちなみに俺はどれかっつーと…ごめんなさい、どれも使ってません。
C + Win32 API から入ったんで。どうも Win32 API と STL って仲悪くて…
最近は C++ 自体、あまりさわってないですし。
> ぐぐってみると、resursion software の Standard ToolKit ってのが出てきました。
> この会社、昔は ObjectSpace って名前だったんでしょうか。
YES.
Recursion Software は .NET版 STL / Java版 STL ともいえるライブラリをリリースしてい
ます。
>10名以下
10人の選ばれし者達。余程の猛者でないとお声がかからないんだろうなあ。
επιστημηさんはその一人かあ。すごいや!
>どのSTLも元はHewlettPackardの実装です。
そういえばディンカム版STLのヘッダにHPのシグネチャがありますね。
Alexander Stepanovさん、偉大な発明品をどうも有難う。
元はいっしょでも、実装者によって性能は変わるものですね。
(既述のS34の記事の通り。επιστημηさん、有難うございます)
>Rogue Wave
BuilderはデュアルSTLですか?ゴージャスですね。
うーん、「このSTLがいいぜ!これにしとけよ!」というのはないようですね。
せっかく質問したので、もうちょっと待ってみます。
STLportがスピード的にはよさげです。
メモリのallocate/deallocateがかなりtune-upされているように見受けられます。
鵜呑みにしないように。きちんとベンチマークかけて実測/検証してください。
速度だけでなく、生成されるコードの量/質さらに処理系との相性なども
あるでしょう。良し悪しの尺度が様々なので'どれがいい'とは一概には
決められないと考えます。
>Win32 API と STL って仲悪くて…
初めて知りました。僕はガンガン使ってます。
ひょっとして 僕の知識の及ばない所で 何かマズい事があるのかも...。
>.NET版 STL / Java版 STL ともいえるライブラリ
新興系の言語(C#やJAVA)も、やはり親であるC++に倣ってテンプレート(GE
NERICSって言うんでしたっけ?)を導入しましたね。何年か前から。
#でも、若い者(新興系言語)には まだまだ負けないぞお、C++(爺さん)は。