みなさんはどのSTLを使ってますか?

[戻る]
アミバ 2004/07/22(木) 15:40:30
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にちょっと惹かれています。どっちがいいのかなあ。速度が速い方がい
いなあ。

επιστημη [E-Mail] [HomePage] 2004/07/22(木) 15:42:49
BoostはSTLではありません。

アミバ 2004/07/22(木) 15:50:51
あれ?そうなんですか?もしかしてSTLを内包したライブラリって感じですか?
それに関するYes/Noだけでいいから教えて下さい〜。お願いします。

何かの情報で、C++標準化委員の何人かが開発に加わってるという話を聞きました。
って事は、Boost特有の便利な機能を、その人達がISOにプッシュしたりするんじ
ゃないかなー、と思ってみたり。
なら、「今からBoost入れとっか?」と思ったんです。

アミバ 2004/07/22(木) 15:51:35
ああ、あとεπιστημηさんはどれを使われているのでしょうか?

アミバ 2004/07/22(木) 15:57:15
度々すいません。

使い分けている方もいらっしゃると思います。
そういう方は「どれが最も良かったか?」を聞かせて頂けると幸いです。
特に速度に関して興味があります。

自分でも調べようと思いますが、先人の経験談を少しでも頂けたら嬉しいなあと思い質問
させて頂きました。宜しくお願いします。

Ban 2004/07/22(木) 15:58:00
NO です。

STL も内包してません。STL を補完するような便利な機能とかはありしますけど、
基本的に boost は STL とは独立した別機能群です。

とりあえず使ってみてまず損はないと思いますけど>boost

επιστημη [E-Mail] [HomePage] 2004/07/22(木) 16:02:15
> あれ?そうなんですか?もしかしてSTLを内包したライブラリって感じですか?
> それに関するYes/Noだけでいいから教えて下さい〜。お願いします。

内包していません。 STLでは物足りないと感じた猛者連中が'追加'したものの集合体です。

> って事は、Boost特有の便利な機能を、その人達がISOにプッシュしたりするんじ
> ゃないかなー、と思ってみたり。

C++標準化委員会のメンバとしてお答えします。その通りです。
Boostの正規表現(regex)を標準C++ライブラリに組み入れようかという
動きがあります。

>「今からBoost入れとっか?」と思ったんです。

「STLとBoost入れとっか?」と思ってください。

> ああ、あとεπιστημηさんはどれを使われているのでしょうか?

いろいろ。GCC/C++Builder/VC++ それぞれ異なるSTL実装ですから。

アミバ 2004/07/22(木) 16:04:44
STLが既に扱っている機能は、Boostは触れてないのですね。
STLに無い機能を加速、追加したライブラリがBoostであると。

また僕の誤りが修正されました。ありがとうございました。

となると僕の知ってるSTLは、ディンカムとSTLportだけになってしまうなあ。
では仕切りなおしを。

この二つ(或いはみなさんが御存知のSTL)では、どれをお好みですか?

アミバ 2004/07/22(木) 16:17:03
>C++標準化委員会のメンバとしてお答えします。
なぬっ!?びっくり仰天、参りました。って事は文字列処理の標準化に大きく関われてい
るのですね。凄いなあ。恐れながら一つ伺っていいでしょうか?日本人の標準化委員って
何人ぐらいいらっしゃるんでしょうか?

>「STLとBoost入れとっか?」と思ってください。
了解です。どうも有難う御座いました。でもBoost入れると勉強が必要だな
あ...。
#そんな事いってちゃだめだ!

>いろいろ。GCC/C++Builder/VC++ それぞれ異なるSTL実装ですから。
そういえばGNUのSTLを忘れてました。これも独自の実装なのでしょうねえ。
Builderに標準添付のSTLは 確かSTLportでしたね。
どれも似たり寄ったりなのかなあ。STLportに軍配が上がると思ってました。

引き続き 皆さんの経験談をお待ちしております〜。

επιστημη [E-Mail] [HomePage] 2004/07/22(木) 16:25:16
>>C++標準化委員会のメンバとしてお答えします。
> なぬっ!?びっくり仰天、参りました。って事は文字列処理の標準化に大きく関われてい
> るのですね。

確かに string/stream関係は日本が貢献しましたが、あくまで個人として、です。
標準化委員会はC++の言語/ライブラリの全域に亘ってreviewします。

> 凄いなあ。恐れながら一つ伺っていいでしょうか?日本人の標準化委員って
> 何人ぐらいいらっしゃるんでしょうか?

えーと、10名以下ですね。

> そういえばGNUのSTLを忘れてました。これも独自の実装なのでしょうねえ。

GNUのはおそらくSGI版がベースです。
独自といえば独自ですが、元をただせばルーツはひとつ。
どのSTLも元はHewlettPackardの実装です。

> Builderに標準添付のSTLは 確かSTLportでしたね。

ちょっと前なら(今でも?) Rogue Wave のSTLも納められているはず。

シャノン 2004/07/22(木) 16:35:05
επιστημηさん、標準化委員会の方だったんですか…
道理で詳しいわけだ…

ぐぐってみると、resursion software の Standard ToolKit ってのが出てきました。
この会社、昔は ObjectSpace って名前だったんでしょうか。

ちなみに俺はどれかっつーと…ごめんなさい、どれも使ってません。
C + Win32 API から入ったんで。どうも Win32 API と STL って仲悪くて…
最近は C++ 自体、あまりさわってないですし。

επιστημη [E-Mail] [HomePage] 2004/07/22(木) 16:39:17
> ぐぐってみると、resursion software の Standard ToolKit ってのが出てきました。
> この会社、昔は ObjectSpace って名前だったんでしょうか。

YES. 

Recursion Software は .NET版 STL / Java版 STL ともいえるライブラリをリリースしてい
ます。

アミバ 2004/07/22(木) 16:47:51
>10名以下
10人の選ばれし者達。余程の猛者でないとお声がかからないんだろうなあ。
επιστημηさんはその一人かあ。すごいや!

>どのSTLも元はHewlettPackardの実装です。
そういえばディンカム版STLのヘッダにHPのシグネチャがありますね。
Alexander Stepanovさん、偉大な発明品をどうも有難う。

元はいっしょでも、実装者によって性能は変わるものですね。
(既述のS34の記事の通り。επιστημηさん、有難うございます)

>Rogue Wave
BuilderはデュアルSTLですか?ゴージャスですね。

うーん、「このSTLがいいぜ!これにしとけよ!」というのはないようですね。
せっかく質問したので、もうちょっと待ってみます。

επιστημη [E-Mail] [HomePage] 2004/07/22(木) 16:53:53
STLportがスピード的にはよさげです。
メモリのallocate/deallocateがかなりtune-upされているように見受けられます。

鵜呑みにしないように。きちんとベンチマークかけて実測/検証してください。

速度だけでなく、生成されるコードの量/質さらに処理系との相性なども
あるでしょう。良し悪しの尺度が様々なので'どれがいい'とは一概には
決められないと考えます。

アミバ 2004/07/22(木) 17:00:13
>Win32 API と STL って仲悪くて…
初めて知りました。僕はガンガン使ってます。
ひょっとして 僕の知識の及ばない所で 何かマズい事があるのかも...。

>.NET版 STL / Java版 STL ともいえるライブラリ
新興系の言語(C#やJAVA)も、やはり親であるC++に倣ってテンプレート(GE
NERICSって言うんでしたっけ?)を導入しましたね。何年か前から。

#でも、若い者(新興系言語)には まだまだ負けないぞお、C++(爺さん)は。

επιστημη [E-Mail] [HomePage] 2004/07/22(木) 17:11:24
> 新興系の言語(C#やJAVA)も、やはり親であるC++に倣ってテンプレート(GE
> NERICSって言うんでしたっけ?)を導入しましたね。何年か前から。

いえ、どちらもようやくβ版でgenericsをサポートするようになりました。

ただ、C#/Javaのgenericsは見た目はtemplateに似てますが、実現のカラクリ
は大きく異なります。templateに慣れたC++屋からみると'とほほ'に感じるかも、です。

アミバ 2004/07/22(木) 17:20:51
あれ?又 間違えてましたか!度々の修正、有難うございます。大感謝です。

βで しかも「ようやく」なんですね。止めに"とほほ"だなんて(^^;

でもC++しか知らない僕は、ちょっぴり優越感を感じます。
「えっへっへ。親父超えはまだまだ先だのう〜」という感じで。

επιστημη [E-Mail] [HomePage] 2004/07/22(木) 17:30:55
Java/C# generics のメリットといえば、(ソースではなく)コンパイルされたライブラリ
として提供できるところでしょうか。template引数の種類が増えてもコード膨張を起こしませ
んし。

アミバ 2004/07/23(金) 10:29:48
[[解決]]
>コンパイルされたライブラリとして提供できるところでしょうか。
>template引数の種類が増えてもコード膨張を起こしませんし。
初めて知りました。ちょっと詳しく伺いたい所ですが、これ以上の質問責めは自重した方
が良さそうです。自分で調べてみます〜。

という事で、一晩経った為 ここいらで〆にしたいと思います。
情報を下さった皆様、本当に有難う御座いました〜。

επιστημη [E-Mail] [HomePage] 2004/07/23(金) 11:39:44
> ちょっと詳しく伺いたい所ですが、これ以上の質問責めは自重した方が良さそうです。自分で
調べてみます〜。

Cマガ9月号の特集はGenerics
# 僕が書かせていただきます

アミバ 2004/07/23(金) 12:16:04
>Cマガ9月号の特集はGenerics # 僕が書かせていただきます
本当ですか!? では買いましょう!その記事の為に。

古いスレッドには追加発言できません。