【C++】template 統合スレ -- Part5
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG以下のスレッドを統合するスレです。
STLスレッド
Part1 http://pc.2ch.net/tech/kako/1004/10042/1004287394.html
Part2 http://pc3.2ch.net/tech/kako/1026/10267/1026793823.html
【C++】Boost使い集まれ!
http://pc3.2ch.net/test/read.cgi/tech/1033830935/ (html化待ち?)
Generic Programming with C++ Template
http://pc.2ch.net/tech/kako/1008/10085/1008593126.html
【C++】template 統合スレ -- STL/Boost/Loki, etc.
http://pc2.2ch.net/test/read.cgi/tech/1037795348/
【C++】template 統合スレ -- Part2
http://pc2.2ch.net/test/read.cgi/tech/1047978546/ (html化待ち)
【C++】template 統合スレ -- Part3
http://pc5.2ch.net/test/read.cgi/tech/1066493064/
【C++】template 統合スレ -- Part4
http://pc5.2ch.net/test/read.cgi/tech/1083550483/
関連スレ、その他リンクは >>2-5 あたりに。
0153デフォルトの名無しさん
NGNGあえて意識して使うまでもないだろ。
日頃からどれだけのたくさんの不純物を
シャットアウトしてくれてると思ってるんだ。
その時点でSTLより上。
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNG仕様なのでしょうか?
あと、RandomNumberGeneratorは自分で作成しないといけないのでしょうか?
0156デフォルトの名無しさん
NGNG「ランダムにならない」が、「プログラムを複数回起動しても
同一の並べ替えが起こる」を意味すると仮定して回答する。
random_shuffleは乱数生成器としてデフォルトでstd::randを使うから、
毎回違う結果がほしければ、random_shuffleを使う前に毎回違う値でstd::srandを呼ぶべし。
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNG| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | /devは重い
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG大抵のOSの大抵の言語の大抵の処理系では、
srand 相当のものに同じ seed を渡すと(あるいは srand 相当のものを使わないと)
乱数を使うと毎回同じ数列が返されるようになってます。
乱数を利用するプログラムを作るとき、実行の度に違う値がでてると、
単体テストやらアルゴリズムの効率の比較やらプロファイリングに基づいた
チューニングとかしにくいから。
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG当然 mt でも事情は同じ。っていうかこれは利点なんだけど・・・
0166デフォルトの名無しさん
NGNG> 単体テストやらアルゴリズムの効率の比較やらプロファイリングに基づいた
> チューニングとかしにくいから。
あたかもそれを理由にそのような仕様にしたといわんばかり
しかし実際は疑似RNGから導かれる当然の結果に過ぎない
因果の誤解は思考力の不足を証明する
0167not 163
NGNGAPI的は、seedを自動で、って選択もあったんじゃない?
# 例えば、大昔のMS-BASIC
渡すようにしてるのは、>>163にある理由もその一つでしょ。
0168デフォルトの名無しさん
NGNG俺は163じゃないけど。
それを理由にそのような仕様にしたんだよ。srandの規格を嫁。
でもrandがグローバルだから使いにくいけどね。
0169デフォルトの名無しさん
NGNGそれを理由にそのような仕様にしたんだよ…
0170デフォルトの名無しさん
NGNGttp://www.lysator.liu.se/c/rat/d10.html#4-10-2
0171デフォルトの名無しさん
NGNG「単体テストやらアルゴリズムの効率の比較やら
プロファイリングに基づいたチューニングをしやすいように」
という人間の要望から発生した?
人間の要望に応じて数学的現象が定まるのはおかしいな。
ピタゴラスの定理は誰かがそれを望んだからそうなったと言うタイプはどこにでもいるが。
0172デフォルトの名無しさん
NGNG> それを理由にそのような仕様にしたんだよ。srandの規格を嫁。
163を翼嫁
「srand相当のもの」だ
疑似RNG全般についての話
疑似RNG全般の性格をその一部であるsrandの規格から規定するな
0173デフォルトの名無しさん
NGNGAPI設計の話をしていることが理解できない頭の人。
0174デフォルトの名無しさん
NGNGスレ違いの上にウザイから下げて書けヴォケ
0175デフォルトの名無しさん
NGNGこういう、知識は豊富だけど頭が悪い人、っているよね。
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGはじめからAPIの話だと思ってました。
0178デフォルトの名無しさん
NGNGMS BASIC はかなり初期のものから RANDOMIZE で seed を与え(られ)る仕様だよ。
実行毎に自動的に seed の初期化はされないけど、それは変数の値も含めて
全ての環境が残るっていう BASIC インタプリタの特性をひきずってるから。
0179デフォルトの名無しさん
NGNG処理系(ライブラリ)が勝手に seed を変えたりはしない、というAPI の仕様の話をしてます。
だって発端が >>151 だし。んで一般アプリケーションはどう振舞うべきかというと>>156 で
回答が出ているわけで、なんとも終わった話であることであるなぁ・・・
0180デフォルトの名無しさん
NGNG>>155 じゃねーの?
0181デフォルトの名無しさん
NGNGアルゴリズムの話からAPI設計の話にすりかえて
そのあとAPI設計の話からAPIの話にすりかえた?
0182デフォルトの名無しさん
NGNGアルゴリズムって、STL用語で言うところのアルゴリズムのこと?
0183182
NGNG0184デフォルトの名無しさん
NGNG> 大抵のOSの大抵の言語の大抵の処理系では、
> srand 相当のものに同じ seed を渡すと(あるいは srand 相当のものを使わないと)
> 乱数を使うと毎回同じ数列が返されるようになってます。
この前半部分は「大抵のOSの大抵の言語の大抵の処理系」と言ってるように
特定の言語の特定の規格について言ってるわけではなく
一般的に使われている線形合同な疑似乱数アルゴリズムの特徴について解説してる。
> 乱数を利用するプログラムを作るとき、実行の度に違う値がでてると、
> 単体テストやらアルゴリズムの効率の比較やらプロファイリングに基づいた
> チューニングとかしにくいから。
この後半は一見前半を受けて前半部分の理由を書いてるように見えるがそうではなく
Cの規格に含まれるrand/srandがなぜ線形合同な疑似乱数を採用したかの理由となってる。
話の展開がちぐはぐ過ぎだ。
これじゃ疑似乱数アルゴリズム全般の話題だと解釈する人も出てくるし
Cのrand/srandに特化した話題だと解釈する人も出てくる。
163の話の真中でアルゴリズムの話から規格の話に脈略なくすりかわってるということ。
0185デフォルトの名無しさん
NGNG(2)特定の言語の規格がなぜそのアルゴリズムを採用したかという理由
>>155からアルゴリズムの話になってる最中に
(1)のふりをして(2)を書いたから人によって話題の対象がばらばらになり
アホレスが連鎖したってことかな
0186デフォルトの名無しさん
NGNGモリフォーリズムのこと
0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1071697977/388-
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNGまずこのポリホの日本語をなんとかしてくれ
0192デフォルトの名無しさん
NGNG漏れは 163 なんだけど、
>>155 を「なんで適当に seed を毎回変えてくれないの?バグ?仕様?」ってな風に読んじゃったわけ。
seed が同じ擬似乱数なら毎回同じ系列が出てくるのは自明だとおもったんで。
んで、なんで毎回適当に変える仕様になってないか、を説明してしまった。
変わらないことが必要なことはあるし、変えたいなら自分で変えられるし、と。
0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNGとやかく言う前にsrandの規格書を読め
0195is not a 163
NGNG頭悪いのバレバレ。
0196デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNG後半はなぜ採用されたのか、という説明。
なのに、>>166は後半をアルゴリズムがそうである説明だと誤解したわけだね。
なぜそんなありえない誤解の仕方をしたのかは解からないけど、
酔っ払っていたのかもしれないし、頭のおかしい人が沢山いる環境で生活してるのかもしれない。
あんまり攻めてやるな。
0199デフォルトの名無しさん
NGNG163はアルゴリズムの話ではなくて、発端からAPIの話題のつもりです
0200デフォルトの名無しさん
NGNG擬似RND以外に選択肢が無かったみたいなことを言いたかったんじゃないの?
0201デフォルトの名無しさん
NGNG後半は採用した理由。
だから163は間違ってないということでファイナルアンサー?
0202デフォルトの名無しさん
NGNGそれはみんな理解してる。
話題はすでに>>166が何を意味してるのかに移ってる。
0203デフォルトの名無しさん
NGNGここではどういう意味で使ってるんですか?
みんなばらばらのように見えるんですが
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNGよりよく実現されると言えるかな?
0208デフォルトの名無しさん
NGNG複雑になるだけでそれ以外メリットないし。
0209デフォルトの名無しさん
NGNG163を分かりやすく言い直すと次のようなもの
・ほとんどの言語や処理系では乱数に疑似乱数を使っている
・疑似乱数の場合 srand のような seed 設定できる関数に seed を渡すと毎回同じ数列が返る
・さらに srand のような seed 設定できる関数を使わない場合も毎回同じ数列が返る
・なぜそういう結果になるかというと、実行の度に違う値がでてると不便だから
・不便というのがどういうことかというと
単体テスト・アルゴリズムの効率の比較など
プロファイリングに基づいたチューニングとかしにくい
0210デフォルトの名無しさん
NGNG・・・という現象は・・・という人間の要望から発生した?
と書いてあるからこいつが誤読してる。
現象が発生したのではなく、仕様が発生したとみんな言ってるだけなのに。
0211デフォルトの名無しさん
NGNGDipendencyなんたらPrinciple?
0212デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNGDIPはせまく読めば古典的なOOデザインだが、Policyなんか
先に生まれたライブラリがあとから提供されるものに依存する、
という点では立派な依存関係の逆転。
0215デフォルトの名無しさん
NGNG短時間に似たようなことを沢山書くのが流行デスカ
0216デフォルトの名無しさん
NGNGそうみたいです。
0217デフォルトの名無しさん
NGNG>先に生まれたライブラリがあとから提供されるものに依存する
>先に生まれたライブラリがあとから提供されるものに依存する
んなことできるかボケ
0218デフォルトの名無しさん
NGNG知ったかぶりに使ってるだけなんだから
許して上げてください
0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG後から渡されたパラメータに依存していることになる。
その引数が単なる値じゃなくてポリモっぽいものであれば
アルゴリズムその他は後から提供されたものに委ねるという
パターンがとれる。
じゃあテンプレートパラメータの場合は?
通常(メソッドや関数)の引数としてに何かを受け取る場合
と違い、アルゴリズムだけじゃなく自分自身の構造まで依存
できる。
ポリシーの多重継承で実装されたホスト・クラスなんかはそう。
0221デフォルトの名無しさん
NGNGインターフェイスに依存している
>テンプレートパラメータの場合は
同じ
0222デフォルトの名無しさん
NGNGことによって再利用性を高めるのが目的。
インターフェイス、データ構造、アルゴリズムのうち
どれかは最初に規定しておくが、その他は後から提供
できるようにしたい。
普通のOOの場合はインターフェイスが規定されていて
アルゴリズムは後付けOK。
テンプレートの場合は?同じじゃないよね?
0223デフォルトの名無しさん
NGNG日本語でヨロ
0224デフォルトの名無しさん
NGNGテンプレートは同じインターフェイスのものをまとめるものだから、
インターフェイス重視という点ではすごくDIP。
0225デフォルトの名無しさん
NGNGホストクラスが使う限りのメソッドを、コンパイルが通るシンタックスで
用意しておけばOKとなれば、そこで(ベースとなるインターフェイスとの)
依存関係が切れてウマー
0226デフォルトの名無しさん
NGNG使ったメソッドなどのインターフェイスとの依存を切る事は出来ないよ。
0227デフォルトの名無しさん
NGNG>>222で書いたインターフェイス、データ構造、アルゴリズムなどの
要素について、どれに対する依存を残してどの依存を切るかtemplateを
使うと選択肢が増えると言いたかった。
0228デフォルトの名無しさん
NGNG他にも日本語おかしいが
0229デフォルトの名無しさん
NGNG例えば配列の代わりにvectorを使用してて怒られるといったことは(特殊な環境を除いて)ないだろうと思いますが
ポインタの代わりにshared_ptrを使うというのはあまり推奨されないものなんですかね?
0230デフォルトの名無しさん
NGNG知らないやつが勉強不足。
0231デフォルトの名無しさん
NGNGauto_ptrで済む所をなんでもshared_ptrにするのはどうかと思いますね
0232デフォルトの名無しさん
NGNGどうもありがとうございます。
>知らないやつが勉強不足。
うちの教授(プログラムの専門に非ず)に「標準じゃないけど使って大丈夫なん?」的な
ことを言われたんでちょっと使うのが不安だったんですが、使っても良さそうですね。
>auto_ptrで済む所をなんでもshared_ptrにするのは
そこら辺も注意してやっていきたいと思います。
それにしてもまだあまり参考書が出版されてないみたいですね。
やはりSTLへの採用待ちですか…
0233デフォルトの名無しさん
NGNG教授は単に君の勉強不足を不安視したんでは。
使っても大丈夫かどうか2chで聞くくらいだから。
0234デフォルトの名無しさん
NGNG>>232
STLへの採用ってあるのかな?
BoostはBoostとしていつか標準化されるんだと思ってたけど
0235デフォルトの名無しさん
NGNGSTL(というか、C++標準ライブラリ)への採用は結構マジ話らしい。
聞きかじりだけど、boost::iteratorsあたりで使われているイテレータの分類なんかは
もう次期C++への採用は内定だそうで。
0236デフォルトの名無しさん
NGNG次期C++標準に含まれることが決定しているそうな
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNGboostはSTLと同じくらい標準だよ。
それぐらいSTLは使われてない。
実装がひとつしかない分、boostのほうがまともかもしれない。
0240デフォルトの名無しさん
NGNG>boostはSTLと同じくらい標準だよ。
>それぐらいSTLは使われてない。
意味不明すぎ。STLは標準でboostは標準じゃない。
0241デフォルトの名無しさん
NGNG>それぐらいSTLは使われてない。
分かりやすく
0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG「結構マジ話らしい」言われちゅゃおうところが情けな
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNGこれは的を射てますね
つ〜かboostの中の人はSTLに依存しないコードを書いちゃってくれたらいいのに
と思いますよ
sgiと組み合わせるとボロボロ
結局preprocessorしか使えない
lexical_castすら使えないのには泣けました
0248デフォルトの名無しさん
NGNG0249247
NGNGとあるハードウェア用のAPIを使って書かないといけないんです
でそのSDKが既にsgi使ってるんですよ
#includeが<list>だったり<list.h>だったりして
そのライブラリのソースコードは提供されていません
SDKにはAPIのヘッダ達とユーザ側でリンクするオブジェクトファイル(.lib)と
sgistlのヘッダが含まれているんです
例えばVC++付属のstl使おうとするとコンパイルとおらないんですが
こういう状況でstlport使えるんでしょうか?
ていうか試して使えなかった記憶があるんだけどもし使える方法があるならかなり嬉しい
0250デフォルトの名無しさん
NGNGバイナリ提供部分とのインターフェースがsgistlに依存していれば無理。
そうでなければ、どうにかして置き換えられるはず。
もちろん、「どうにかして」の部分は実際に
その環境を持っているあんたにしかわかんないよ。
0251あんた
NGNG>バイナリ提供部分とのインターフェースがsgistlに依存していれば無理。
これってどうやったらわかるんですか?
というライブラリがsgiとスタティックリンクされてたら無理
っていう理解でよいでしょうか?
0252デフォルトの名無しさん
NGNGそのSDKはSGIのSTLのままでいいの?
stlportの名前空間を変えてリンクすれば?
■ このスレッドは過去ログ倉庫に格納されています