[表示 : 全て 最新50 1-99 101- 201- 2ch.scのread.cgiへ]
Update time : 12/02 15:44 / Filesize : 56 KB / Number-of Response : 200
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part128



1 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 00:03:49.04 ID:Hj6igpz/.net]
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ:
C++相談室 part127 echo.2ch.net/test/read.cgi/tech/1474636291/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 echo.2ch.net/test/read.cgi/tech/1478440682/

■長いソースを貼るときはここへ。■
 codepad.org/
 ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)

■ shared_ptr で 標準ライブラリのFILE構造体ポインタをラップしよう
class FILE_Ptr : public shared_ptr<FILE> {
 struct FILEDeleleter {
  void operator() (FILE* fp) const { if (fp != NULL) { fclose(fp); }}
 };
public:
 FILE_Ptr(FILE* fp = NULL) : shared_ptr<FILE>(fp, FILEDeleleter()) {}
 operator FILE* () { return get(); }
 template<typename T> bool operator == (const T& obj) const { return get() == reinterpret_cast<FILE*>(obj); }
 template<typename T> bool operator != (const T& obj) const { return get() != reinterpret_cast<FILE*>(obj); }
};

2 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 00:28:48.17 ID:1WWISKCd.net]
2

3 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 00:53:39.36 ID:oNxTNf5q.net]
前スレでSTLなんて使わない信用できないみたいな恐ろしいこと言ってるアホがいたが、そういう人って生配列、生ポ、for、whileで暮らしてるのかな
正気の沙汰ではない

4 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 00:59:26.69 ID:wer2Kop4.net]
C++の規格書に書かれているということはC++の一部なのであってそれを避けるというのはC++の機能の半分を使わないでいるということだ

5 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 00:59:39.65 ID:wlJLbi6+.net]
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

---- テンプレ ここまで ----

6 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 01:08:13.74 ID:42UX/YwI.net]
STLが時代遅れとかほざいてたな
モロにスタンダードで常に進化を続けているというのにな

7 名前:デフォルトの名無しさん [2016/11/27(日) 01:18:02.64 ID:0maVDSwR.net]
>>3, >>6
自社でSTLやboostより素晴らしいのを作っているじゃないか
日本企業のIT技術力は圧倒的世界一で、3流の外国製のライブラリ等は使用に耐えないって企業が多いから
そうなるんだろ

8 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 01:19:33.70 ID:MAcCGYLn.net]
STLは使ったことがないな
標準ライブラリのstd::vectorはよく使う

9 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 01:43:32.38 ID:wer2Kop4.net]
そうだな

10 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 02:11:39.36 ID:4hBpEO9s.net]
実際問題、コンテナクラスに汎用的な性能を求めることが間違ってる。
本当に速度が欲しい場合には選ばん。



11 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 02:16:56.70 ID:0maVDSwR.net]
>>10
本当に速度が欲しい場合はコンテナを自作しているんだろな

12 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 02:47:34.77 ID:wer2Kop4.net]
という奴が実際にvectorに対して明確に優位性のあるコンテナを作れたところを見たことがない
どうせそういった研究に取り組んだこともなく口だけなんだろうな

13 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 03:11:56.31 ID:Hj6igpz/.net]
STLはこれ以上速くなりようがないくらいに簡素な作りだと思いこんでいる私には、STLを上回る速度のコンテナ書く自信は全くないな。
私は圧倒的にスキルが不足しているから、要素をコピースワップするコストはついついshared_ptr使って対処してしまう。コンテナを自作できない無能な自分が嫌になるよ。

14 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 03:21:22.71 ID:411Nbo29.net]
使い方次第じゃないかなぁ
極端な話、vectorで毎回先頭に挿入するような使い方してたら遅くなるよね
どういうのか把握して適切なコンテナ選べるならわざわざ自作する必要はないかと

15 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 03:30:23.93 ID:Hj6igpz/.net]
私の場合、ついつい std::vector<T> ではなく、std::vector<shared_ptr<T>> を使って済ませてしまうので、いつまでたってもコンテナを自作するスキルが上がらないよ。
「ぼくのかんがえたさいきょうのこんてな」を自作する精神力がまだまだ足りないようだ。反省。

16 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 03:33:36.54 ID:wer2Kop4.net]
C++はコンテナの種類だけなら無駄に多いからな

17 名前:デフォルトの名無しさん [2016/11/27(日) 06:48:20.63 ID:pUctI5IC.net]
dequeとvectorは片方あればいいとかか

18 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 09:24:27.84 ID:SqUFXM7z.net]
>>11
vectorはただのガワなんだから、速度が必要ならallocatorだけ自作すりゃいいだろ

19 名前:デフォルトの名無しさん [2016/11/27(日) 09:29:56.70 ID:WW/pNH6a.net]
連続性が保証できないから。

20 名前:デフォルトの名無しさん [2016/11/27(日) 09:53:11.77 ID:Hj6igpz/.net]
任天堂の倒し方知ってる系の人なら、当然のようにSTLを否定するだろう。
私は任天堂の倒し方知らないので、こういう人たちを心の底から尊敬する。



21 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 10:42:14.10 ID:P/uIEXU4.net]
>>20
なぜそこまでSTLを否定したいのかよこ分からないなあ。
多くのケースで多くの人が使うのに必要十分な程度の機能、性能は持ってる訳だし、標準ライブラリとしては妥当な仕様かと思う。
これで不足な場合だけ自作のコンテナなりを考えればいいだけでしょ。

22 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 10:58:23.07 ID:Uyh6ikI3.net]
>>8
何をいってるのか、意味不

23 名前:デフォルトの名無しさん [2016/11/27(日) 11:06:06.35 ID:l9GcbBcF.net]
いつものあれだろ?
「標準仕様書中の表現として、STLあるいはstandard template libraryなどという言葉は一回も使用されていない」
って言う。

厳格にこの言いつけを守ってる人がいるんだよ…

24 名前:デフォルトの名無しさん [2016/11/27(日) 11:26:05.74 ID:Hj6igpz/.net]
「STLのコンテナでは力不足」と言い切る優れたプログラマになりたいのだが、私はちっともそのレベルに到達できない。orz

25 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 11:37:32.43 ID:zdOfPVrj.net]
婆ちゃんがイオンのことを今でもジャスコというのを聞くとちょっとイラッとする
STLという単語をみると同じような気持ちになるが
老人に新しいことを覚えさせるのが難しいと知っている俺は
そしらぬ顔で静観することにしている

26 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 11:39:37.56 ID:wer2Kop4.net]
>>19
また古代からタイムスリップしてきた人ですか?

27 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 11:44:52.34 ID:qE9zLQzg.net]
>>24
それ、優れたプログラマじゃない可能性がたっぷりある。

28 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 11:48:02.44 ID:MAcCGYLn.net]
標準ライブラリは速くなる余地が無いわけではないな。
テンプレート特殊化を書いてやらないと解決出来ないときもある。
Visual C++の標準ライブラリが最近見直したら一部の処理が何十倍も速くなったと言っているくらいだ

29 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 11:56:08.91 ID:wer2Kop4.net]
そりゃ実装依存のところは多い
規格書に事細かに記されているわけではない
しかしそれはコンテナのような昔からあって仕様がシンプルなクラスのことでは無いだろう

30 名前:デフォルトの名無しさん [2016/11/27(日) 12:10:55.75 ID:Hj6igpz/.net]
以下の文書によると、basic_string のパフォーマンスが改善され、std::vectorをオーバーホールとか。
マイクロソフトの連中は、このスレでSTLを否定する優秀な人のような英断ができず、いまだにSTLの保守をやってる。
このスレでSTLを否定する優秀な人を一本釣りしてマイクロソフトにスカウトすればいいのに、マイクロソフトは見る目がないな。

What's New for Visual C++ in Visual Studio 2017 RC
https://docs.microsoft.com/en-us/cpp/top/what-s-new-for-visual-cpp-in-visual-studio



31 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 12:12:18.35 ID:MAcCGYLn.net]
>>29
>規格書に事細かに記されているわけではない

突然関係ないことを言い出してどうした?
コンテナー自作する必要が有ったと主張する人に対してその必要性が全く理解できないという人がいたので
可能性はを示唆しただけだが。

32 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 12:14:02.11 ID:LAFeCFqG.net]
algorithm系は使うもの使わないものがはっきりわかれない?

33 名前:デフォルトの名無しさん [2016/11/27(日) 12:17:16.89 ID:Hj6igpz/.net]
このスレは何人も天才プログラマが書き込んでるんだな。
STLで十分と思ってしまうレベルの低い私は、己の無能さで嫌悪感に陥りそうだ。

34 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 12:17:28.71 ID:wer2Kop4.net]
>>30
C++のベンダーをやっている以上保守は義務だろ
MS独自のMFCはあまりにもゴミだが
CMapを使おうと思ったらあまりにも低機能すぎてキーボード破壊しそうになった

35 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 12:28:42.78 ID:plVb52Pg.net]
>>32
adjacent_differenceの悪口はよせ

36 名前:デフォルトの名無しさん [2016/11/27(日) 12:41:27.00 ID:Hj6igpz/.net]
怠惰で無能な私は、bool で存在有無だけを返すストイックな binary_search() を使いこなせない。
ついつい、upper_bound()やlower_bound() を使ってしまう。
STLで事足りると思ってしまう自己暗示からどうしても抜け出せない。
このスレの天才プログラマーのようにSTLを捨てて「ぼくのかんがえたさいきょうのこんてな」に行くべきなのだが。

37 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 13:18:21.08 ID:+eKpaGRF.net]
STLはあくまで汎用的で問題が起こりにくい作りになっているから
プログラムの用途に合った特殊なコンテナってことなら
自作する意味はあるかもしれない
例えば要素を削除するときに前詰めしないコンテナ、とか
そのコンテナには、どこが「空き」になっているか、別途把握できるしくみが
必要だけど、それはそういう風に実装すればよいだけだし
要は、連続的なメモリに確保されるけど、歯抜けになることが許されるコンテナ
ただしそんなに速くならないだろうね

38 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 13:55:49.85 ID:eIL19TgX.net]
>>1は無能
自分で書いておきながらワッチョイ付けられないわ
ウンコード貼り付けるわ

39 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 14:11:24.54 ID:LAFeCFqG.net]
>>36
むしろequal_rangeしか使わない

40 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 14:12:23.15 ID:Hj6igpz/.net]
>>38
全くその通り。無能。恥を知れって感じ。



41 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 14:50:05.59 ID:w634zOe4.net]
今時STLはないだろ

42 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 15:08:20.29 ID:P/uIEXU4.net]
>>33
STLで十分と思うことは、別にレベルが低いとはならない。
STLで十分と思うことがレベルが低いというのは、レベルが低いと思う。

自分を卑下する書き込みをしつつ、高尚なこと考えている俺カッケーと酔いしれてないか?

43 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 15:26:29.03 ID:BLqqs723.net]
それは己ちゃうんかいw

44 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 15:55:56.37 ID:3Qbc/l9n.net]
>>42
ド素人の背伸びなんだからほっといてやれよw
下手につつくと居付いちゃうぞ

45 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 15:56:46.93 ID:SqUFXM7z.net]
>>37
それってlistじゃないの?

46 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 15:57:37.51 ID:SqUFXM7z.net]
>>45
失礼連続前提ね

47 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 16:32:55.67 ID:42UX/YwI.net]
理解出来ないと時代遅れと言って反応を見ているんだろうが端から見ていて痛々しい限りだ

48 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 16:49:01.91 ID:2ZVZJ+KM.net]
STLが理解できない?
お前さんだけじゃねw+

49 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 17:08:21.71 ID:LAFeCFqG.net]
コンテナ、イテレータ、アルゴリズムの組合せ、という根っこにある考え方でまあ上手く行ってたんだけど、
今となってはちょっと古びた感じはするね。
<algorithm>のごちゃついた様を見るとそういうふうに思う。

50 名前:デフォルトの名無しさん [2016/11/27(日) 18:02:33.78 ID:Hj6igpz/.net]
>>42 のような面白い返答があったのでそろそろ真意を正直に書くと、
コンテナ自作派に憧れるていを取りつつコンテナ自作派をバカにしてただけだ。

「任天堂の倒し方知ってる」とか「ぼくのかんがえたさいきょうのこんてな」とか例えてる時点で
コンテナ自作派をバカにしてると君らに察してもらえるだろうと思ってたのだが、
本当にコンテナ自作派に憧れているとストレートに解釈した人が出てきて楽しかったわ。

>>37
「空き」の定義は開発者が決めなければならない。
コンテナに突っ込むクラスに「空き」フラグを扱うメンバ変数を追加すればSTLコンテナ利用で解決することを
わざわざ車輪の再発明でコンテナまで自作する人をおだててバカにするのは実に楽しい。



51 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 18:11:22.15 ID:MAcCGYLn.net]
>コンテナ自作派をバカにしてると君らに察してもらえるだろうと思ってた

これは思った。気付かない奴はアスペ

52 名前:デフォルトの名無しさん [2016/11/27(日) 19:37:37.43 ID:YEwu7XTV.net]
俺も諄いなーと思いつつ黙って見てたけど、ストーレートに解釈してるやつが居るのみてビックリしたのと同時に、こんなに純真な心で2chやってて大丈夫なのかと心配になったわ。
あと、だからこのスレよく荒れてるんだなぁと納得した。

53 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 19:49:28.80 ID:4JtqQJ1X.net]
ゲームとかなら、汎用性よりスピード命や小メモリとかで俺会社のSTLを作ってそうなきがするが
ゲーム制作会社とかではしているところはないのかな

>>1 はなんでshared_ptrのFILE deleterを張っているんだ
C++ならFILEじゃなくfstreamだろって気がするが

54 名前:デフォルトの名無しさん [2016/11/27(日) 20:14:35.31 ID:Hj6igpz/.net]
>>53
あまりにも ID:Hj6igpz/ が無能すぎて fstream を使いこなせないからだよ。みなまで言わせんな恥ずかしい。
アホな ID:Hj6igpz/ は>>1 のラッパークラス FILE_Ptr を使って以下のように稚拙なコードを書く傾向がある。
こんなことやってるからいつまでたっても ostream系を使いこなすスキルが育たない。ID:Hj6igpz/ は C++プログラマに向いてないよ。

 {
  FILE_Ptr fp = fopen("foo.log", "w");
  if (fp != NULL) {
   fprintf(fp, "1hello world\n");
   fputs("2howdy world\n", fp);
   fwrite("3hello world\n", 13, 1, fp);
  }
 }

55 名前:デフォルトの名無しさん [2016/11/27(日) 20:42:29.48 ID:pUctI5IC.net]
fstreamはfstreamで20余年の付き合いを経てもいまだにイミフなとこあるし

56 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 20:47:34.07 ID:P/uIEXU4.net]
>>50
お前さんの真意とやらはどうでもいいから、面倒くさいことせずに、初めからもっと直接的に意味のある議論をしてほしい。
ここまでの流れで唯一ためになったのは、>>52のレスにあった「諄い」という漢字を知ったということだけだ。

57 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 20:49:47.24 ID:P/uIEXU4.net]
>>53
ゲーム会社のことはよく知らないけど、そういうのはアロケータの自作でもしてるのかな。

58 名前:デフォルトの名無しさん [2016/11/27(日) 21:04:15.44 ID:zEm283RN.net]
ゲームエンジン・アーキテクチャによると
コンテナを自作するのは普通らしい

59 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 21:13:33.19 ID:kJvliJ+f.net]
>>54
それ以前に、FILE"Deleleter"ってわざとしているのか
それともdeleteのスペル知らないのか
deleteはC++のキーワードだよな
operator FILE* () はcons抜けだし

60 名前:デフォルトの名無しさん [2016/11/27(日) 21:46:20.25 ID:Hj6igpz/.net]
>>59
何しろ無能だからこんなもんだろう。生温かく見守ってやれ。



61 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 21:54:20.66 ID:IYfuOepr.net]
>>53
有名なのだとEASTLでオープンソース化されてる

ttp://i-saint.hatenablog.com/entry/20101012/1286822888

ttps://github.com/electronicarts/EASTL

62 名前:デフォルトの名無しさん [2016/11/27(日) 21:59:03.95 ID:WW/pNH6a.net]
ベンチ取ってみたらどうか。
僕の古典的PCしかもノートでも驚くほど速い。
意外と問題にならない程度の速度を持っているのではないか。

63 名前:デフォルトの名無しさん [2016/11/27(日) 22:00:05.48 ID:Hj6igpz/.net]
>>59
勉強する良い機会になった。ありがとう。
https://ja.wikipedia.org/wiki/Cons

64 名前:デフォルトの名無しさん mailto:sage [2016/11/28(月) 00:27:42.27 ID:nFYh94sG.net]
type erasureのためだけにshared_ptrを持ち出さなければならないクソ言語

65 名前:デフォルトの名無しさん mailto:sage [2016/11/28(月) 13:41:28.68 ID:VFe8unWC.net]
SSEのイントリンシック使うとき16バイト境界にアライン必須なんで
stlに入れるとき用にアロケータだけ自作したことはあるな(コンテナの型自体変わってしまうので不便だけど
EASTLは知らんかった、家帰ったら使ってみよう

66 名前:デフォルトの名無しさん [2016/11/28(月) 17:31:28.84 ID:w/GpYaDf.net]
>>61
docディレクトリの文書でEAの中の人がSTLについて熱く語っているのが好感を持てた。

67 名前:デフォルトの名無しさん [2016/11/28(月) 21:08:56.39 ID:w/GpYaDf.net]
EASTL にベンチマークプログラム があったのでWindows10(x86)の Visual Studio 2017 RC でビルド&実行してみた。
以下は、そのベンチマークプログラム EASTLBenchmarks.exeの標準出力結果

****************************************************************************************
EASTL Benchmark test results
****************************************************************************************

EASTL version: 3.04.00
Platform: Windows on X86
Compiler: Microsoft Visual C++ compiler, version 1910
Allocator: PPMalloc::GeneralAllocator. Thread safety enabled.
Build: Full optimization. Inlining enabled.

Values are ticks and time to complete tests; smaller values are better.

Test VC++ Dinkumware EASTL Ratio Difference?
---------------------------------------------------------------------------------------------------------------------
algorithm/adj_find/vector<TestObject> | 699814 699.8 us | 913513 913.5 us | 0.77 -
algorithm/copy/vector<LargePOD> | 270367 270.4 us | 269001 269.0 us | 1.01
algorithm/copy/vector<uint32_t> | 8193 8.2 us | 5462 5.5 us | 1.50 +
algorithm/copy_backward/vector<LargePOD> | 280267 280.3 us | 274463 274.5 us | 1.02
algorithm/copy_backward/vector<uint32_t> | 3072 3.1 us | 3414 3.4 us | 0.90
algorithm/count/vector<uint64_t> | 270367 270.4 us | 266271 266.3 us | 1.02
algorithm/equal_range/vector<uint64_t> | 10268141 10.3 ms | 22004184 22.0 ms | 0.47 -

68 名前:デフォルトの名無しさん [2016/11/28(月) 21:12:50.29 ID:w/GpYaDf.net]
>>67 の続き。途中省略で末尾だけ記載する。

vector<AutoRefCount>/erase | 2132212 2.1 ms | 2128798 2.1 ms | 1.00

vector<MovableType>/erase | 124073512 124.1 ms | 121713608 121.7 ms | 1.02
vector<MovableType>/reallocate | 2317236 2.3 ms | 2053355 2.1 ms | 1.13

vector<uint64>/erase | 11193260 11.2 ms | 11209646 11.2 ms | 1.00
vector<uint64>/insert | 9193159 9.2 ms | 9221835 9.2 ms | 1.00
vector<uint64>/iteration | 68957 69.0 us | 68957 69.0 us | 1.00
vector<uint64>/operator[] | 106166 106.2 us | 86368 86.4 us | 1.23
vector<uint64>/push_back | 2452078 2.5 ms | 1394507 1.4 ms | 1.76 +
vector<uint64>/sort | 8286133 8.3 ms | 7735840 7.7 ms | 1.07

sum | 871753892 871.8 ms | 768601049 768.6 ms | 1.13

****************************************************************************************

Time to complete all tests: 3.66 s.
RETURNCODE=0

69 名前:デフォルトの名無しさん [2016/11/28(月) 21:22:19.20 ID:w/GpYaDf.net]
>>68の続き。
188個あったテスト項目のうち、71個がEASTL有利、10個がSTL有利、107個が互角という結果になった。
以下に、参考までにEASTL有利だった項目を良い成績順にベスト10を記す。

algorithm/find_end/string/end | 600816 600.8 us | 25945 25.9 us | 23.16 +
deque<ValuePair>/push_back | 5864095 5.9 ms | 880058 880.1 us | 6.66 +
deque<ValuePair>/push_front | 6016006 6.0 ms | 1031627 1.0 ms | 5.83 +
deque<ValuePair>/operator[] | 4007712 4.0 ms | 693327 693.3 us | 5.78 +
hash_map<uint32_t, TestObject>/count | 264563 264.6 us | 56326 56.3 us | 4.70 +
deque<ValuePair>/find | 1577482 1.6 ms | 381996 382.0 us | 4.13 +
algorithm/find_end/string/middle | 579650 579.6 us | 148497 148.5 us | 3.90 +
string<char8_t>/operator[] | 133476 133.5 us | 34820 34.8 us | 3.83 +
string<char16_t>/operator[] | 133477 133.5 us | 35844 35.8 us | 3.72 +
algorithm/lex_cmp/schar[] | 137914 137.9 us | 39941 39.9 us | 3.45 +

70 名前:デフォルトの名無しさん [2016/11/28(月) 21:47:38.32 ID:w/GpYaDf.net]
>>69の続き。上述のランキングをさらに11位から25位まで追記しておく。

algorithm/search/string<char> | 934678 934.7 us | 285728 285.7 us | 3.27 +
algorithm/rotate/vector<TestObject large> | 161470 161.5 us | 58716 58.7 us | 2.75 +
hash_map<uint32_t, TestObject>/operator[] | 343762 343.8 us | 129722 129.7 us | 2.65 +
hash_map<uint32_t, TestObject>/find | 177172 177.2 us | 67250 67.3 us | 2.63 +
map<TestObject, uint32_t>/clear | 90805 90.8 us | 35162 35.2 us | 2.58 +
string<char16_t>/swap | 78515 78.5 us | 30723 30.7 us | 2.56 +
bitset<1500>/count | 14115750 14.1 ms | 6574833 6.6 ms | 2.15 +
hash_map<string, uint32_t>/count | 946967 947.0 us | 443784 443.8 us | 2.13 +
deque<ValuePair>/insert | 28192924 28.2 ms | 13517665 13.5 ms | 2.09 +
bitset<75>/count | 1468243 1.5 ms | 700838 700.8 us | 2.09 +
string<char16_t>/insert/pos,p | 1060986 1.1 ms | 513424 513.4 us | 2.07 +
hash_map<string, uint32_t>/find_as/char* | 947992 948.0 us | 461194 461.2 us | 2.06 +
string<char16_t>/find/p,pos,n | 66859496 66.9 ms | 33442208 33.4 ms | 2.00 +
bitset<75>/flip | 400772 400.8 us | 200727 200.7 us | 2.00 +
set<uint32_t>/count | 1733147 1.7 ms | 870841 870.8 us | 1.99 +



71 名前:デフォルトの名無しさん mailto:sage [2016/11/28(月) 22:16:01.54 ID:aUTLhSnb.net]
キモッ

72 名前:デフォルトの名無しさん mailto:sage [2016/11/28(月) 22:29:08.06 ID:nxkexmqL.net]
EASTLにコンテナの範囲外アクセスチェックとかのデバッグ機能ってある?
自分でもやってみるけど知ってる人いたら教えて欲しい

73 名前:デフォルトの名無しさん mailto:sage [2016/11/29(火) 03:57:58.52 ID:JKfAWAo3.net]
C++派八策

1.C++で書けばパフォーマンスが良くなる。なぜならパフォーマンスが良くなるまでC++書くからだ。
これを頭に叩き込め。

2.常にC++で書いておればそのうち他の要因でパフォーマンスが良くなるときが来る。
そのときに思い切りC++の手柄を主張しろ。

3.いいことはC++の手柄、悪いことは他の要因のせいにしろ。

4.データは都合のいいところだけ使え。グラフは切貼りしろ。

5.タイムラグを上手く使え。

6.「これがC++だ」と明言するな。定義を問われたら「C++の本を読め」と言っておけ。

7.批判されたら「お前はC++を理解してない」と言え。

8.いざとなったら定義を変えろ。オブジェクト指向に固執するな。

74 名前:デフォルトの名無しさん [2016/11/29(火) 06:49:46.04 ID:nF3eDud1.net]
boost spiritって
LL(∞)パーサー生成すんの?
PEGパーサー生成するの?
LL法とPEG法wikipedia両方の実装例にこの名前のってあるんだけど
それとも両方とも実装してるの?

75 名前:デフォルトの名無しさん mailto:sage [2016/11/29(火) 10:54:07.14 ID:FnERKnae.net]
菅官房長官「ちょっと何言ってるかわかんない」

76 名前:デフォルトの名無しさん [2016/11/29(火) 13:08:19.85 ID:nF3eDud1.net]
4行目の「法」と「w」の間に格助詞の「の」が入る予定でした

77 名前:デフォルトの名無しさん mailto:sage [2016/11/29(火) 13:44:34.04 ID:CM7LOPnj.net]
プログラム的にいうと
LLは実装で使うアルゴリズムのひとつ
PEGは仕様を定義する表現(言語)のひとつ
で対立・排他関係にあるわけではない

boost.spiritはPEG形式で与えられたルールから構文解析器を作成するライブラリ
(作成された解析器はLL法で入力を解析する)

78 名前:デフォルトの名無しさん [2016/11/29(火) 18:41:17.09 ID:nF3eDud1.net]
>>77
ど素人の私にわざわざ回答をくださってありがとうございます。
これからも勉強に励みます

79 名前:デフォルトの名無しさん [2016/11/29(火) 18:46:41.16 ID:GF2v+9TM.net]
boost spiritってEBNFじゃなくてPEGだったんだな
使わんからどうでもいいが

80 名前:デフォルトの名無しさん [2016/11/29(火) 20:31:51.74 ID:baTvYruL.net]
いま趣味で囲碁ソフト作ってるんだけど
Cなんすよ。
いろいろ面倒なんでC++で
作りなおそうかと思案中です。

作成の労力は何割ぐらい
軽減するでしょうか?



81 名前:デフォルトの名無しさん mailto:sage [2016/11/29(火) 20:47:31.45 ID:DmRk6e1B.net]
増す

82 名前:デフォルトの名無しさん mailto:sage [2016/11/29(火) 20:55:01.08 ID:1SK7brxW.net]
その質問に答えられる人は誰一人としていないが
少なくともCより面倒になることは(熟練したC++プログラマなら)ありえないから
チャレンジしてみる価値はある
ただし、()の中が重要で、熟練したプログラマなら、という話
君がすごく筋がよいならC++はきっと役に立つはず
一方で筋が悪いというのはC++においては余計なことをやろうとすること
余計なことさえしなければ、Cより面倒になることはあり得ないし
逆に心に邪念があれば、Cとは別の意味で面倒な樹海に迷い込む
C++は書く人の心の中を映す鏡

83 名前:デフォルトの名無しさん mailto:sage [2016/11/29(火) 21:09:35.06 ID:glNciwx+.net]
Haxe(ヘックス)はOSSで、JSに型チェックを付けたような言語で(altJS)、
JS(ES5), Flash, PHP, C++, Java, C#, Python に書き出せる。
Windows8.1対応。IDEは、FlashDevelop

このサイトで、ブラウザでプログラミングして、実行できる
Try Haxe !
try.haxe.org/

Haxeプログラミング入門、尾野政樹、2015

84 名前:デフォルトの名無しさん mailto:sage [2016/11/29(火) 21:16:52.64 ID:bPmZgvzu.net]
>>83
このコピペ時々見るけどヘイトHaxeの効果抜群だな

85 名前:デフォルトの名無しさん [2016/11/29(火) 21:19:45.31 ID:X8I97SOu.net]
>>80
レートどんくらい?
いちおープラスなんか?

86 名前:デフォルトの名無しさん mailto:sage [2016/11/29(火) 21:24:49.77 ID:Ofu9bBqm.net]
>>84
せやな。Mindに手を出すわ

87 名前:デフォルトの名無しさん mailto:sage [2016/11/29(火) 21:42:26.41 ID:8ZPVrbbC.net]
>>80
お前の能力によるとしか言えないんじゃないのか
ソースコードの量が多いと今のCをC++へ作り直す工程はかなりの労力だろな

88 名前:デフォルトの名無しさん mailto:sage [2016/11/29(火) 21:44:01.60 ID:ua9E/pwR.net]
いや、>>80は絶対にC++で書き直すべきだ!!

89 名前:デフォルトの名無しさん mailto:sage [2016/11/30(水) 06:56:30.70 ID:UPCsGfLr.net]
C++を「Cにvectorとかstringなんかの便利な型を追加した言語」と
割り切って使うなら手間は増えないんじゃないかな。

でも実際にC++で書き始めると、C++らしい書き方をしないと
恥ずかしいみたいな気持ちになって深みにはまることが多い。

90 名前:デフォルトの名無しさん mailto:sage [2016/11/30(水) 07:12:30.65 ID:HOaAIIiu.net]
>>80がgithubにソースを晒せば解決



91 名前:デフォルトの名無しさん [2016/11/30(水) 07:35:10.92 ID:60EZvxwk.net]
三割くらい減る

92 名前:デフォルトの名無しさん [2016/11/30(水) 08:50:24.62 ID:AmbpRVJT.net]
Cでいったん書いたんなら、そのときの反省点が色々あるだろ
それを踏まえてより上手くまとめるにはC++はいいツールだぜ

93 名前:デフォルトの名無しさん [2016/11/30(水) 09:01:18.76 ID:WcEJDmm/.net]
ぼくのかんがえるC++にしかできない超強力3大機能。
・自動的なデストラクタ呼び出し。
・moveコンストラクタと右辺値参照。
・ラムダ。

94 名前:デフォルトの名無しさん [2016/11/30(水) 09:03:12.26 ID:WcEJDmm/.net]
下の根の乾かないうちに訂正。

ぼくのかんがえるC++にしかできない超強力3大(5大?)機能。
・自動的なデストラクタ呼び出し。
・moveコンストラクタと右辺値参照。
・templateとlambda。

95 名前:デフォルトの名無しさん [2016/11/30(水) 09:05:34.45 ID:WcEJDmm/.net]
exceptionとRTTIはよく使うけど次点。

異論反論はもちろん認める。

96 名前:デフォルトの名無しさん [2016/11/30(水) 09:15:29.34 ID:60EZvxwk.net]
RTTIは使わないな
使うなって偉い人が言ってるし

97 名前:デフォルトの名無しさん mailto:sage [2016/11/30(水) 09:19:23.91 ID:mG9+BxSG.net]
なんで?(殺意)

98 名前:デフォルトの名無しさん mailto:sage [2016/11/30(水) 10:01:29.94 ID:2V+M5QrA.net]
RAIIの間違いじゃね?
RTTIをよく使うって違和感ある。

99 名前:デフォルトの名無しさん mailto:sage [2016/11/30(水) 10:25:44.68 ID:TMG+JuRV.net]
話題になっていた
STLと標準ライブラリと違うもの?

100 名前:デフォルトの名無しさん [2016/11/30(水) 11:41:28.64 ID:AmbpRVJT.net]
typeidをデバッグや実験でなく実用で使ったことが確かにないなあ
C++例外は嫌々しぶしぶ使ってるけど、クソすぎてため息








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<56KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef