- 1 名前:デフォルトの名無しさん [2009/07/19(日) 22:32:32 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/ スレを勃てるまでもないC/C++の質問はここで 8 pc12.2ch.net/test/read.cgi/tech/1235921779/ スレを勃てるまでもないC/C++の質問はここで 9 pc12.2ch.net/test/read.cgi/tech/1240022781/ スレを勃てるまでもないC/C++の質問はここで 10 pc12.2ch.net/test/read.cgi/tech/1242300936/ スレを勃てるまでもないC/C++の質問はここで 11 pc12.2ch.net/test/read.cgi/tech/1245059383/
- 949 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:03:25 ]
- fopen()でファイルを開くコストって結構かかる物なのでしょうか?
今実装してるプログラム、メモリ的な制限から探索範囲を狭めるために、ファイルを結構細分化するつもりなんですが・・・
- 950 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:15:34 ]
- >>949
ベンチマーク取ればいいが、 どんだけ多くても数百個だろ?一瞬。 むしろそれを超えると、OSの最大ディスクリプタ数にひっかかる。
- 951 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:16:48 ]
- >>949
まあストレージの種類によるんじゃないかな。ハードディスク上のファイルだと、 ファイルが分散しててディスクヘッドが頻繁に移動するのはハード的にきつい
- 952 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:30:14 ]
- >>949
48Gテキストの人か
- 953 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:59:52 ]
- 頻繁にファイル開いて読み込んでってやってたらかなり遅くなるな。
一回読み込んだ内容はメモリ上にキャッシュして、キャッシュあふれたら 使用頻度低いほうから解放して…みたいな戦略は考えといたほうがいいと思うね。
- 954 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:04:30 ]
- >>949
ファイルのオープンクローズよりも、開いたファイルでシークしたほうがはるかに軽い。 ファイルの一部分をメモリにマップする手法としてメモリマップドファイルがあるよ。 ディスクキャッシュをメモリにマップするんで大きなデーターを効率的にアクセスできる。
- 955 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:08:25 ]
- Hoge::operator[](A,B,C);
hoge[a][b][c]; みたいなことができればいいのになんでできないんだよ
- 956 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:25:33 ]
- >>955
それでオーバーロードを許したらambiguous多発で大変じゃないか
- 957 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:44:33 ]
- まあ仕方ないからhoge[make_tuple(a,b,c)];
とかやってるんだけどもっとクールアンドホットなハック的テクはないわけ?
- 958 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:46:37 ]
- >>957
プロキシーオブジェクト
- 959 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:53:26 ]
- >>955 ちょっと工夫すればできるから。
- 960 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 21:02:07 ]
- やろうと思えばそりゃできるけどさ
コストとか範囲チェキとか考えると[][][]・・・でできるいいほうほうが浮かばないんだよ
- 961 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 21:02:39 ]
- >>955,958
ちとめんどいができるじゃんと思ったら あれプロキシーオブジェクトっていうのか 初めて知った。さんくすw
- 962 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 21:02:51 ]
- >>957
operator()じゃ駄目なのか?
- 963 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 21:03:31 ]
- >>962
見た目がまずダサいのでアウト
- 964 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 21:07:57 ]
- make_tupleにダサイって言われると地味に凹むな
- 965 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 11:35:00 ]
- 同意
- 966 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 23:13:55 ]
- ある本の息抜き用の演習問題に、「++CではなくC++と名付けられた理由を考えよ」ってのがあったのですが
正解は何なのでしょうか?
- 967 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 23:19:55 ]
- Cの互換性を保つため
- 968 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 23:26:45 ]
- あ、なるほど。前置インクリメントだともはやCではないものを意味するってことですね。
- 969 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 23:49:38 ]
- まあ、今適当に考えただけなんだけどねw
トンチ的な問題だろうから、たぶんそんなに的はずれでもないと思う
- 970 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 04:17:25 ]
- へんなコストがかかるところ
- 971 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 11:40:42 ]
- >>970
深いな。
- 972 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 13:58:48 ]
- //beginコード1
for(int i=0; i<5; i++){ // コード } int i; for(i=0; i<5; i++){ // コード } C++で上か下、どちらのループの方が良い(皆さん使われている)のでしょうか?
- 973 名前:972 mailto:sage [2009/09/10(木) 13:59:57 ]
- 1行目の
//beginコード1 は間違いです、すみません
- 974 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 14:03:33 ]
- i の中身がループの外でも意味を持つなら後者、持たないなら前者で十分。
どっちが良いとか悪いとかじゃなく。
- 975 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 14:35:18 ]
- >>974
なるほど、ありがとうございます。
- 976 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 15:45:51 ]
- >>966
C++ : Cを評価してからインクリメントする ++C : Cをインクリメントしてから評価する C++ は、まずCを評価してから機能を加えたんだよ。
- 977 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 17:13:48 ]
- baseクラスがいくつかの仮想メンバ関数を持っています(たとえば、void f1(), void f2())
f1の実装は2パターン、f2の実装も2パターンあります subクラス側で外部ファイルを参照してそのデータからf1,f2の組み合わせを決定したいです この場合4種類のsubクラスを作るほかやり方はありますか?
- 978 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 17:16:35 ]
- 仮想関数f1だけのクラスと仮想関数f2だけのクラスをそれぞれ作って2パターンずつ実装し、
subのf1, f2は単にそっちを呼び出す
- 979 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 17:17:02 ]
- >>977
f1 なり f2 の中で条件分岐すればできる
- 980 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 17:27:46 ]
- >>978
つまりこういうことでしょうか? class hoge { private: only_f1_impl *f1_; only_f2_impl *f2_; public: void f1(){f1_->f1();} void f2(){f2_->f2();} }; メンバ変数へのアクセスで一手間かかりそうですが、よさそうなので使わせてもらいます ありがとうございました >>979 条件分岐は後で大変そうなのでちょっと・・・
- 981 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 19:56:01 ]
- ##ってどういう意味か教えてください
- 982 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 20:01:49 ]
- そのトークンが現れる位置によって意味が異なるので一概に答えることはできない
- 983 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 20:38:19 ]
- インスタンスがshared_ptr(かweak_ptr)の形でしか生成できなくすることってできる?
- 984 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 21:07:22 ]
- >>983
コンストラクタをプライベートにして、ファクトリメソッドを書くとか。
|

|