【初心者歓迎】C/C++室 Ver.19【環境依存OK】

このエントリーをはてなブックマークに追加
529511
std::stringで使ってるクラスを、CStringに変えて、CString::Find検索にしたところ、
劇的に速くなりましたw

STLって重いんですね。
ちょっとSTLのスレッドでその辺を質問してこようと思います。
530デフォルトの名無しさん:2005/07/10(日) 13:09:02
Game.hでButton.hをインクルードし、Button.hでGame.hをインクルードみたいに、
お互いにインクルードみたいなことがしたいんですが、
やる方法がありましたら、教えてください。
531デフォルトの名無しさん:2005/07/10(日) 13:13:09
>>530
それに未来はないのでヘッダファイルの整理を推奨します。
532デフォルトの名無しさん:2005/07/10(日) 13:26:46
>>531
やっぱ、そこですかね。
方法自体も探してたんですけど、みつからなかったですし。
#ifndef〜#endifは重複対策で相互対策ではないですしね。
ありがとうございました。
533デフォルトの名無しさん:2005/07/10(日) 13:28:34
>>529

std::string text = >>529;
for(int i=0; i<1000,000; i++)
text.find("質問");
でやってみた。(BCB6#4)

std::printf.find > 4246sec
CString.Find > 2774sec
AnsiString.Pos > 1192sec
534デフォルトの名無しさん:2005/07/10(日) 14:10:40
>>530
仕事自体、考えたほうが吉。
535デフォルトの名無しさん:2005/07/10(日) 14:50:02
>>533
俺もやってみたけどCStringの方が遅かった。
_mbsstrを呼んでいるためのようなのでそこをどうにかしてみたけれど、
やっぱりstd::stringの方が早かった。
ATL::CString 3857ms
std::string   3069ms
(10,000,000回forで回した)

CStringは最終的に_mbsstrを呼んでいた。
std::stringは検索対象の1文字目を取り出して、それをchar_traits::findで検索し、
見つかればそこからchar_traits::compareして一致しているかで探している。
536デフォルトの名無しさん:2005/07/10(日) 15:09:01
>>535
ワタシはCStringのほうが軽いです。

実行した環境は何でしょうか?
わたしはVC++6です。
537デフォルトの名無しさん:2005/07/10(日) 15:31:15
5000個ぐらいのファイルを10種類の分類したいのですが
ファイルのパスを変更するやり方がわかりません。
どなたか教えてください。
538デフォルトの名無しさん:2005/07/10(日) 15:34:08
超初歩的な質問で申し訳ないんだけど
オープンしたテキストファイルの途中にfprintfで書き込むことってできる?
追加ならできるんだけど・・・
539デフォルトの名無しさん:2005/07/10(日) 15:38:11
>>538
できる。
540535:2005/07/10(日) 15:39:47
>>536
VC++7.1だ。念のために言っておくと535のCStringはstrstrを呼ぶようにしての値だ。