C++のSTLってどうよ?

このエントリーをはてなブックマークに追加
1(-_-)
みんな数値計算にC++のSTL使ってる?
使い心地とかどう?
2QR:01/09/03 17:33 ID:M/mPA3NA
使っています.

個人的にはhash_mapを正式に採用して欲しかった。
とりあえず,代わりに普通のmapを使ってるけど。

コンパイルに時間が掛かることさえ気にしなければ,便利だと思います.
3名無しさん@1周年:01/09/04 23:17 ID:xlHjQRyo
mapってどんなことをするのでしょうか?
4名無しさん@1周年:01/09/05 01:23 ID:W8OJMcXo
>>2
hash_mapにして欲しいのはmapの実装がツリーだからですよね?
Java使いなんですが、なんでこの2つには継承関係がないんでしょう?

class hash_map : base_map;
class map : base_map;

なら
class App {

}
54:01/09/05 01:30 ID:W8OJMcXo
すいません。書きかけ

なら
class App {
base_map &m;
base_map &mapFactory() = 0
App : m(mapFactory()) {
}
}

とかして、必要なときにmapの実装を変えられて嬉しいのに
まさか、
template<class Tmap>
class App {
Tmap &m;
...
}
とかするとテンプレートだらけになっちゃうし
6名無しさん@1周年:01/09/08 07:08
algorithmってなんだ?
7名無しさん@1周年:01/09/14 17:06
一からあれらを作るのが面倒で STL を使っているが、
まぁ、便利といえば便利である。
今では必需品となっている。
しかし、auto_ptr の vector が使えないなど、不満点もいろいろある。

STL の根幹と言えるであろう algorithm は、
まぁ、あまり使わないなぁ。
STL でのアルゴリズムってのはループ処理の関数テンプレートなんだが、
いちいち関数を作って for_each に渡すとかいうのは効率悪いからなぁ。
ループ処理全体で1つの関数にすることも多いし。
functional もそんなに使えんし。
メンバ関数を渡すときの見にくさもあるしな。
でも、ソートとかランダムシャッフルとか、まぁ、そこら辺は使うかな。
8名無しさん@1周年:01/09/14 17:56
C++ 自体が糞なんで使ってない。
9名無しさん@1周年:01/11/04 09:46
STLはGNUのライブラリに勝てる?
10名無しさん@1周年:01/11/08 02:06
>> 9
STLもGNUのライブラリに含まれてるよ、つーか、含まれてないとANSI C++
準拠と呼べない。それとも、glibのような他のGeneric Lib.と比べてる?
11名無しさん@1周年:01/11/08 04:18
ウチは速度重視のシミュレーションやってるから使わないかな。
継承使わないとかだったら C と同じ程度のスピードでるんでしょうけど
それじゃ C++ の意味が......
12つかうべき:01/11/08 19:33
template class library valarray<.> と complex<.> はシミュレ
ーションに活用できます。まだバギーな面が残っていますが、十分
に実用的です。これらのの組み合わせは活用されるべきです。でも
殆ど使われていないようです。通常よりはワンランク上のプログラ
ミング・レベルが必要だからです。でも FEM などのプログラムを
作る人たちならば、C++ に添付されている STL の
valarray<.>/complex<.> を容易に使いこなせるはずです。
13名無しさん@1周年:01/11/08 19:39
>>12
valarryについてですが,STLと親和性が悪いのが気になります.
また,下手な使い方をするとステートメント毎にループを回すことになる気がするのですが
その辺はどうなんでしょう?
あと,ウェブ上でvalarrayを使ったコード片などで参考になりそうなものってあります?
14つかうべき:01/11/08 20:20
>>13
たしかに STL のアルゴリズムと組み合わせることは少ないかも。
>また,下手な使い方をするとステートメント毎にループを回すことになる気がするのですが
>その辺はどうなんでしょう?
slice, slice_array<.> と組み合わせれば殆どループを回すことが
なくなります。matrix の積・和なども容易に記述できます。
slice_array<.> を調べて見てください。ただし詳しい説明が殆ど
ないので template library のヘッダを読むことになると思います。

>あと,ウェブ上でvalarrayを使ったコード片などで参考になりそうなものってあります?
こっちは見たことがありません。私も知りたいところです。自分で
も Web page を作るつもりです。
15名無しさん@1周年:01/11/21 23:00
>>11
継承していても、virtualを使わなければ、コンパイル時に
解決されるのでスピード面での問題は無いと思います。
 プログラミング言語C++Ver3
を見たら、速度ダウンを5%程度にすることを目標に。。。。
みたいなことが書いてあったから、それぐらいだったら
許せるかも。だって、解法の選択しだいで計算速度なんて
いくらでも変わりますから。
 でもまあ、STLはあんまり使いません。
valarrayを使うなら、ポインタをいじった方が
分かりやすいし、高速化しやすい(僕的に)ので。
 オブジェクト指向自体はいいですよ。
最近は、データとアルゴリズムを完全に分離すること
を目指しています。そのためには、どうしても
オブジェクト指向が(簡単にプログラムを書くためには)
必要になります。
16名無しさん@1周年:01/11/22 03:06
関数の多重定義とかは遅くなる?
17名無しさん@1周年:01/11/22 06:59
>>16
コンパイル時に決定されるような物は速度に影響ない。
ついでに言っておくとと、
もし仮想関数でも呼び出される関数が十分大きければこれまた速度に影響ない。
18名無しさん@1周年:01/11/23 17:25
オーバーヘッドの占める割合が下がるからだね
19名無しさん@Emacs:01/12/07 01:59
さすがに行列計算とかには使わんけど,ちょっとしたループでは
for_each は便利!
20ななしさん:01/12/13 20:14
valarrayで、行列クラスを実装しようとしたが、
あんまりvalarrayが賢くないという結論に達するに至って、
結局vectorクラスを利用する羽目になった。
たとえば、行列の列や行を定数倍するという用途は多々あるが、
slice_arrayには、定数倍する演算子が用意されていないし、[]オペレータ
すらない。結局、配列を作って*=で掛けるしか方法がない。
これは、非常に無駄である。
速度を追求するなら、クラスを自作して、blasで計算させるのがベストですな。
21名無しさん@1周年:02/03/03 17:00
とりあえずSTLで関数方程式の数値解析を試してみる。
解きたい行列を作るところまで逝けばいいな。
そのあとはLU分解のルーチンを漁って終わりにするか

22名無しさん@1周年:02/03/06 00:15
complex で十分だ・・・
23名無しさん@1周年:02/03/07 22:41
何が充分なの?
24名無しさん@1周年:02/03/31 01:51
インライン展開できるコードの場合sortなんかはCライブラリのものより
関数呼び出しを端折れる分だけSTL使った方が早くなるって本に
書いてあったYO!
コレマジ?
25名無しさん@一周年:02/03/31 16:05
Cの方がバグ取りが簡単だったりしない?

只今C++を使うかどうか迷ってるところ
26名無しさん@1周年:02/03/31 20:28
たしかにinlineできる分はそうかもしれない。
C++も仮想関数使わなきゃ遅くならないと思う
27名無しさん@1周年:02/06/20 01:15
テンプレートプログラミングにとりつかれたあんたたちは重症〜〜〜
28名無しさん@1周年:02/07/25 01:42
>>14-15 >>20
sliceって演算遅くないか?
プログラミング言語 第3版だと、sliceで行列作っているけど、
結局、valarray< valarray < T > >で作り直したよ。
もしかしたら、vector< vector < T > >でよかったのかも
29 :02/10/19 01:31
>>28

そんなことしたら、
a = b * c
の計算で何回メモリ確保が呼ばれるでしょうか。

参照カウント使って、
極力テンポラリオブジェクトを軽くします
行列クラス-->データクラス
行列クラスはデータクラスへの参照を持つだけ。
こうしないと、
上式のようなのが、Cで書いたときより遅くなるんで
C++で書く意味はきれいに見える、でしかなくなってしまう。
30天才と仕事したい。:02/10/20 23:07
実装されてない古い規格のコンパイラなのに天才の先輩が無理やりSTL
(もどき)を実装したもんだから、無理やり使わされた。
軽い計算なんで、STLは何の問題も無し。STL意外考えられんよ。
データとアルゴリズムの分離とはデータはcontainer classにもたせて、
それをアルゴリズムを司るクラスにまかせるということだね。
アルゴリズムはstrategy patternにしてすげかえると。
OracleのようなRDBを数値計算に使うとするとRDBのインタフェース
となるクラスはどう扱うかな。
31名無しさん@1周年:02/10/22 15:58
いやぁ・・凄いねぇ・・・
32名無しさん@1周年:02/10/26 20:38
gcc(g++)とかで使うlibstdc++でさ、
vectorとかコンテナに "at"参照等、実装されてないよね。
そんなもんないとコンパイラに言われて愕然としたんだけど。

みなさまは、gccでどういったSTL使ってます?
33名無しさん@1周年:02/10/28 00:56
>>32
太古のgcc, おそらくはg++の2.91あたりを使っていますか?

STLPortでもいいけど、できればRedHat8でも淹れて、
g++の3.2を使ってみましょう。標準準拠そのもの。
34名無しさん@1周年:02/10/28 07:09
gccのversionは2.96です。そこまで古くはないよ。

しかし、gccとSTLは直接的には関係ないんじゃ・・・。
35名無しさん@1周年:02/10/29 05:27
>>34
たいていg++のバージョンに応じてそれ用のlibstdc++がついてるから。


36名無しさん@1周年:02/10/30 19:50
37山崎渉:03/01/11 05:27
(^^)
38山崎渉:03/04/17 09:24
(^^)
39山崎渉:03/04/20 03:59
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
40山崎渉:03/05/21 21:59
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
41山崎渉:03/05/21 23:29
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
42山崎渉:03/05/28 14:28
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
43山崎 渉:03/07/12 12:36

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
44山崎 渉:03/07/15 12:47

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
45山崎 渉:03/08/02 02:31
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
47山崎 渉:03/08/15 18:30
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
48名無しさん@3周年:03/12/06 02:01
STLの関数オブジェクトって便利ですか?
具体例(便利だと思われる使い方)あれば
教えてください。
49名無しさん@3周年:04/01/22 00:48
期待age
50名無しさん@Vim%Chalice:04/01/22 03:56
>>48
まぁSTLに限らんだろうけど、関数ポインタを使うはずのところを
それをさらにインライン展開しやすくしたもの、って感じで使えば
そこそこ便利なんじゃないかと。
51名無しさん@3周年:04/12/05 17:33:42
>>32
おれもg++の2.?をつかったときに全く同じ目にあいました。

52名無しさん@3周年:04/12/24 03:10:43
東北大学のスーパーコンピュータSX-7が、HPCチャレンジベンチマークにおいて世界最高速記録を達成!!

 NECはこのたび、東北大学情報シナジーセンター(根元義章センター長http://www.isc.tohoku.ac.jp/)に納入し、2003年の1月から稼動しておりますスーパーコンピュータSX-7http://www.cc.tohoku.ac.jp/service/super/super-2.htmlにおいて、HPC(高性能計算)分野での
新しいベンチマークテストであるHPCチャレンジベンチマーク(http://icl.cs.utk.edu/hpcc/)で、28項目中16項目で世界最高速を達成いたしました。

 HPCチャレンジベンチマークは、米国政府の援助のもと、テネシー大学のJ.ドンガラ(J.Dongarra)博士を中心に米国や日本のHPC関係者が参画して、作成されたものであります。
従来、高性能計算機の性能番付として主流であったTOP500ベンチマークで使用されてきたLinpack(連立方程式の計算)を補完し、高性能計算機の性能を多面的な観点から評価する目
的で開発されたベンチマークであります。同ベンチマークはHPCシステムで重要となる複数の性能テストから構成されており、コンピュータの演算性能だけではなく、メモリアクセ
ス性能、並列処理のためのライブラリであるMPI(Message Passing Interface)の通信性能など、HPCシステムにおける様々な機能の性能を総合的に評価することが出来ます。

 今回のベンチマークテストでは、NECのSXシリーズのようなベクトル型スーパーコンピュータだけではなく、汎用プロセッサを使用したスカラー型スーパーコンピュータの性
能も数多く登録されており、今後のHPCベンチマークテストの主流になるものと見込まれております。

 このたび、SX-7が世界最高速を達成した、HPCチャレンジベンチマークは、Linpackベンチマークも含んだ7カテゴリー28項目のベンチマークから構成されております。

プレスリリース全文はこちらです。
日本電気株式会社プレスリリース 2004年12月21日
http://www.nec.co.jp/press/ja/0412/2102.html
53美香 ◆RQ0Spv3q06 :04/12/24 06:06:53
☆ヽ(o_ _)oポテッ
54名無しさん@3周年:05/01/01 08:22:31
C++のSTL上に実装された、ハード記述用のクラスライブラリSystemCを
皆さんご存知でしょうか?

ご存知の方もご存知でない方も、↓ こちらへ来て是非議論に参加して
下さい。

シミュレーション言語SystemCを語る
http://science3.2ch.net/test/read.cgi/sim/1104385750/l50
55ぼるじょあ ◆yBEncckFOU :05/01/13 23:59:38
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
56名無しさん@5周年:2006/02/18(土) 11:42:47
お断りします
57名無しさん@5周年:2007/06/14(木) 23:38:48
お断りします
58名無しさん@5周年:2007/11/24(土) 18:36:44
STLが無いC++はC++じゃねーよってくらSTLは重要
C言語の場合変なところからライブラリ引っ張ってきてるんじゃねーよw

結局のところ速度面でもおとなしくC#あたり使ってた方がいいよ
俺みたいな素人がSTL使うとおっせぇwww
59名無しさん@5周年:2008/04/21(月) 08:14:00
stereolithography
60名無しさん@5周年:2008/05/12(月) 18:08:41
ublasはalocatorにstl使ってないか
61名無しさん@5周年:2009/09/02(水) 07:36:01
今のVC++2005とかだともうC言語はコンソールアプリでしか動かない
Win32も一応Cだがあれは特殊だし

そして、Winのボタンやらを動かすための言語はみんなCLIだかCLRだかに
変更されてしまった
^付きの参照ばっかりw

VC++6.0までからまた結構変わってしまった
そもそもその前のgraphics.hからの変化も大きくて面食らったものだが

一部サイトで、VC++.net使ったシミュレーション表示をやってくれている所もあるが
まだ書籍としては殆ど無いわけだ
そして、CもC++もSTLもCLIもあやふやなまま何かコード丸移して動かしてそれっきりの勉強法だと
どこでどんな変数、どんな配列をどんな形で(特に参照するかそのまま使うかの使い分けが重要だ)作り出し、
それを利用し、そして解放するかとか全然身に付かないで終わっちまうな

こりゃますます厄介になってきたもんだwwwww

この辺を教えるのを世の中が面倒がって頭ごなしに旧来の親しんだ方式を教えたのがこの5年間
そしてプログラミングを学ぶ事で社会の繋がり、各部署の繋がりといった辺りにも頭を巡らす機会が無いまま、
頭ごなしの社会をただふっ飛ばせば良いと考えて、民主党が選ばれてしまった次第
何か日本丸ごと吹っ飛びそうだがwww
62名無しさん@5周年:2009/09/02(水) 07:40:36
今はVC++2008だ
そしてVC++2010がもう出来てるぞ

2010からは、エンベッディドシステムプログラミングも可能になる
電子機器開発も、おべんきょ秀才どもと実務で乖離してる分野で
しかも電子機器なんかそこら辺にいくらでも溢れてるのに
殆どがその構造を知らないという状況だからなあ
63名無しさん@5周年:2010/05/13(木) 08:32:33
>>61
妄想は脳内で
公開は無用です
64名無しさん@5周年
そろそろ1冊誰かが本を書く頃だろう