【C++】STL(Standard Template Library)相談室
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNGその話がSTLとどういう関係があるのか?
0233デフォルトの名無しさん
NGNGキーワードわかってんだからググれば?
0234デフォルトの名無しさん
NGNG2引数を1引数にするにはbind1stとかを使えばいいのですが。
別に自作してもたいした手間ではないのですがなんか・・・
0235デフォルトの名無しさん
NGNGない。
0236デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGあ,でもここSTLスレだった・・・.
0239デフォルトの名無しさん
NGNGなんで最後が戻り値の型なんでしょう
最初にあった方が直感的だと思うけど・・・
0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNG俺もそう思た
確かLokiでは最初に戻値型があったような
0242デフォルトの名無しさん
NGNG0243今度はな、名前が…
NGNG0244デフォルトの名無しさん
NGNGもともと順序性あるのにわざわざキーワードにマップする意味なし
0245デフォルトの名無しさん
NGNGたまたまC++の構文がそうなっているだけのような気がするが。
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNGfor (int i = 0; i < 3; ++i)
std::cout << dakedaga + 247 + 2 * i << std::endl;
0252デフォルトの名無しさん
NGNGのすべての要素と和はかっこよくかけませんかね?
forで回すのは無しねw
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNG{
int m_sum;
sum() : m_sum(0) {}
void operator()(int n)
{
m_sum += n;
}
};
として
{
sum s;
std::for_each(vecint.begin(), vecint.end(), s);
std::cout << "合計:" << s.m_sum;
}
これでどうや?
0255デフォルトの名無しさん
NGNG>>254
ありがとうございます。
どちらもC++らしいかっこいいとおもいます。
ですが、>>254さんのはちょっと内容が僕にはヘビーなんで>>253さんので以降と思います。
ありがとうございました
0256デフォルトの名無しさん
NGNGそのまんまの記述が見つかるレベルだぞこれ。
ちゃんと本買ったほうがいいんじゃねえか?
0257デフォルトの名無しさん
NGNGboostでは無名関数が定義されていますので、こういうこともできますよ
int sum = 0;
std::for_each(data.begin(), data.end(), (sum += boost::lambda::_1) );
0258デフォルトの名無しさん
NGNG0259デフォルトの名無しさん
NGNG確かにスレ違いだけど、STLを使っている人の中にはBOOSTを使う用意の
ある人も多いのではないかと思っている。
そういった人が、STLではこうしているがもっとスマートにはならないだろうか、
と考えた時、BOOSTの中にある選択肢を"たまたま"知らなかったとしたらBOOSTスレ
にそれを聞きに行くだろうか。
知らないものは、聞きにはいかない。
ここでキーワードを教えるくらいは良いと思うけれどね。
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNGC++は分割して作業しやすいように出来ているからね。
0262デフォルトの名無しさん
NGNG無名関数ですか、perlっぽいすがまた、激しくカコイイですね
未だにCライクにループで回す癖が抜けませんw
0263デフォルトの名無しさん
NGNGもともとはLispのlambda式なんだけどね。
BOOSTのlambdaはちょっと違和感があるけれど。。。
0264デフォルトの名無しさん
NGNGすれ違いで悪いんですが、Delphiでの解決方法教えてください
0265デフォルトの名無しさん
NGNG257はありだろうけど
さすがにそれはDelphiスレで聞くべきだよ
(本当に知りたければね)
0266デフォルトの名無しさん
NGNGアホは放置しろ。
0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNGttp://jbbs.livedoor.jp/bbs/read.cgi/computer/5651/1048584601/88
0269デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNGfunction, tuple, type_traits, regex, mem_fn, shared_ptr, ref, bind
0272デフォルトの名無しさん
NGNGhttp://lafstern.org/matt/wishlist.html
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNG('A`) マジデ?
0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNG付属stlがくそだからじゃないか?
0278デフォルトの名無しさん
NGNG0279デフォルトの名無しさん
NGNGそんな怪しい名前のソフトは使いたくねーなw
0280デフォルトの名無しさん
NGNG多分これ。
ttp://www.freeml.com/message/[email protected]/0011266
0281デフォルトの名無しさん
NGNGMap.insert(std::pair<std::string,int>(std::string(""),1));
~~~~~~~~~~~~~~~
の部分をハードコーディングではなく書けませんか?
0282デフォルトの名無しさん
NGNGtypedef std::pair<std::string,int> OrenoPair;
OrenoMap Map;
Map.insert(OrenoPair(std::string(""),1));
0283デフォルトの名無しさん
NGNGtypedef std::pair<std::string,int> hoge;
0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNGstd::pair<>(std::string(""), 1)
ってこと?
0286デフォルトの名無しさん
NGNGそれOKなんですか?
0287デフォルトの名無しさん
NGNG0288デフォルトの名無しさん
NGNGダメだからmake_pairってのが用意されてたりする
0289デフォルトの名無しさん
NGNGMap.insert(std::make_pair(std::string(""), 1));
古いコンパイラだと受け付けないのもあるかもしれませんが・・・.
0290デフォルトの名無しさん
NGNGMapT m;
m.insert(MapT::value_type(std::string(""),1));
0291デフォルトの名無しさん
NGNGでもOK
0292デフォルトの名無しさん
NGNG0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNG意味が違うし
0295デフォルトの名無しさん
NGNG詳しく
0296デフォルトの名無しさん
NGNG287さんのはkeyが既存のものも変更されます.
あと,細かいところだと293さんが書かれているの(効率)もあります.
0297rubykitch
NGNGRuby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>C++
0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNG0300デフォルトの名無しさん
NGNGってやっちゃっていいのでしょうか?
なんかVC6だと警告でるのですが・・・。
0301デフォルトの名無しさん
NGNG警告の内容も晒さずに人様の貴重な時間を浪費して良くそんなことが聞けるな。
0302Ruby!!!!!!!!!!!!!!!
NGNG0303デフォルトの名無しさん
NGNGそれは無害です。
E:\Project\Test755\Test755.cpp(16) : warning C4786: 'std::reverse_iterator<......'
: 識別子が '255' 文字に切り捨てられました (debug 情報内)。
0304デフォルトの名無しさん
NGNGもうしわけありませんでした。
って、調べてみたら解決しました。
どうやらVCのコンパイラが対応していないだけってことだったらしいです。
#pragma warning(disable:4786)
っというように追加して、みんなやってるようです。
0305デフォルトの名無しさん
NGNGレスありがとうございました。
0306デフォルトの名無しさん
NGNGメモリ消費量も断片化しないからstd::vetorは捨てたものじゃない。
当初の予想以上に作り込む必要が出てきたときstd::mapは厳しいね、いろんな意味で。
0307デフォルトの名無しさん
NGNGお前の設計段階での抽象化が甘いだけだよ。
0308デフォルトの名無しさん
NGNG力技の実装が素直なわけないだろ。
「仕様変更に強い」ではなくて、
たまたま実装に都合のいい仕様変更がはいっただけじゃないのか?
特殊なケースを一般的であるかのように言うのは感心できない。
0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGその通りですが、なにか?
0313306
NGNGstd::mapのキー検索の存在感が、かすむ、かすむ。
みんなはどうしてるわけ?mapにおけるキー以外の検索。
0314デフォルトの名無しさん
NGNGboost::multi_index
ってのはもうちょっと先の話だが、
キー以外の検索があるのなら map に不満が出るのはあたりまえ。
最初っからそう言えよ。
0315デフォルトの名無しさん
NGNG他に選択肢がありえる理由がわからん。
0316デフォルトの名無しさん
NGNGless でソートされてる必要は無いから set で保持するのは無駄だろ。
0317デフォルトの名無しさん
NGNG駄目なものは他のものを使っている。例えば赤黒木。
いずれにせよ、検索のための"algorithm"をstd::vector専用に書いたりはしない。
0318デフォルトの名無しさん
NGNGいつも無駄なわけじゃないだろ?
0319306
NGNGstd::setはメモリ消費量が大きいです。無駄多し。vector<list<setです。VC6,VC7で確認済み。
メモリを一括確保できるstd::vector::reserve()がある限り、std::vector最強だと思います。
ちなみに要素をswapしたい場合などは配列を直接移動させることは避けて
これまたポインタ配列やポインタリストを用意して順序付けするようにしてますが。
std::setは論外です。std::setは柔軟性の点で劣るかと。重み付けがかえって邪魔になる事多し。
0320デフォルトの名無しさん
NGNGC++を勉強してこい、話はそれからだな
0321デフォルトの名無しさん
NGNGひょっとして、検索が主な用途じゃないのか?
0322デフォルトの名無しさん
NGNGなんで初めにmapを使ったのか、理由を教えて。
0323デフォルトの名無しさん
NGNGメモリ消費量の大きさが「無駄」になるかどうかは使う場面ごとに違うだろ。
reserve するためには要素数に対する前提が必要だろ。
繰り返すが、
特殊なケースを一般的であるかのように言うのは感心できない。
0324306
NGNG実は、自分のPCに数十万のファイルがあってファイルを探すのが面倒なので
ファイル名だけでフルパス名を取得できる仕組みを作ってたのですが、
ファイル名をキーにして、ファイルのフルパス名・その他情報を値としてstd::mapを構成していたのですが、
色気を出してワイルドカード検索できるようにしようとした時点でstd::mapによる設計が形骸化しました。
現在そのプログラムはバックグラウンドで動かすサーバ形式をとっているのですが、
ファイルが数十万なので常駐メモリが100MBを超えています。(※意図的なものです。)
ギガクラスのメモリを乗せる時代に見合ったファイルインデックスシステムがあってもいいかな、と。
ゲームやVMでしかメモリをフル稼働しないのは勿体ない気がしたこともありまして。
0325デフォルトの名無しさん
NGNG挿入するまとまりを、
vectorに一旦入れてからset.insert(vec.begin(), vec.end())みたいな感じで
まるごとinsertしてみたけど意味無かった。
0326デフォルトの名無しさん
NGNGこれ見てからはもっぱらソース済みvectorは使わなくなったな。
0327デフォルトの名無しさん
NGNGおもいっきり>>307-308じゃんかw
0328デフォルトの名無しさん
NGNG自分の経験則からいくと、vector::reserveの冗長性を織り込んだメモリ消費量より、
std::listやstd::set,std::mapのメモリ断片化によるメモリ消費量の肥大化の方が厄介でした。
多くの場合、要素数のおおよその数が分かっているので、したがってvectorが最適である可能性が高い。
しかも、そのサイズに関する最適化の効果を確実に得られるのもvectorの特徴。
他のコンテナではPGによる最適化の手段が限られている。
0329デフォルトの名無しさん
NGNG予想も付かない場合が多い。
0330デフォルトの名無しさん
NGNG極端にメモリが無駄になるかのどちらかになるから。
vector以外のコンテナはそんな事は無い。
0331デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています