トップページ⇒tech
1002コメント338KB

C++相談室 part128 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2016/11/27(日) 00:03:49.04ID:Hj6igpz/
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

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

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

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

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

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://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); }
};
0002デフォルトの名無しさん2016/11/27(日) 00:28:48.17ID:1WWISKCd
2
0003デフォルトの名無しさん2016/11/27(日) 00:53:39.36ID:oNxTNf5q
前スレでSTLなんて使わない信用できないみたいな恐ろしいこと言ってるアホがいたが、そういう人って生配列、生ポ、for、whileで暮らしてるのかな
正気の沙汰ではない
0004デフォルトの名無しさん2016/11/27(日) 00:59:26.69ID:wer2Kop4
C++の規格書に書かれているということはC++の一部なのであってそれを避けるというのはC++の機能の半分を使わないでいるということだ
0005デフォルトの名無しさん2016/11/27(日) 00:59:39.65ID:wlJLbi6+
STLつかうと一気に実行ファイルサイズが10倍に?!

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

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

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

#include <stdafx.h>
後死ね。

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

---- テンプレ ここまで ----
0006デフォルトの名無しさん2016/11/27(日) 01:08:13.74ID:42UX/YwI
STLが時代遅れとかほざいてたな
モロにスタンダードで常に進化を続けているというのにな
0007デフォルトの名無しさん2016/11/27(日) 01:18:02.64ID:0maVDSwR
>>3, >>6
自社でSTLやboostより素晴らしいのを作っているじゃないか
日本企業のIT技術力は圧倒的世界一で、3流の外国製のライブラリ等は使用に耐えないって企業が多いから
そうなるんだろ
0008デフォルトの名無しさん2016/11/27(日) 01:19:33.70ID:MAcCGYLn
STLは使ったことがないな
標準ライブラリのstd::vectorはよく使う
0009デフォルトの名無しさん2016/11/27(日) 01:43:32.38ID:wer2Kop4
そうだな
0010デフォルトの名無しさん2016/11/27(日) 02:11:39.36ID:4hBpEO9s
実際問題、コンテナクラスに汎用的な性能を求めることが間違ってる。
本当に速度が欲しい場合には選ばん。
0011デフォルトの名無しさん2016/11/27(日) 02:16:56.70ID:0maVDSwR
>>10
本当に速度が欲しい場合はコンテナを自作しているんだろな
0012デフォルトの名無しさん2016/11/27(日) 02:47:34.77ID:wer2Kop4
という奴が実際にvectorに対して明確に優位性のあるコンテナを作れたところを見たことがない
どうせそういった研究に取り組んだこともなく口だけなんだろうな
0013デフォルトの名無しさん2016/11/27(日) 03:11:56.31ID:Hj6igpz/
STLはこれ以上速くなりようがないくらいに簡素な作りだと思いこんでいる私には、STLを上回る速度のコンテナ書く自信は全くないな。
私は圧倒的にスキルが不足しているから、要素をコピースワップするコストはついついshared_ptr使って対処してしまう。コンテナを自作できない無能な自分が嫌になるよ。
0014デフォルトの名無しさん2016/11/27(日) 03:21:22.71ID:411Nbo29
使い方次第じゃないかなぁ
極端な話、vectorで毎回先頭に挿入するような使い方してたら遅くなるよね
どういうのか把握して適切なコンテナ選べるならわざわざ自作する必要はないかと
0015デフォルトの名無しさん2016/11/27(日) 03:30:23.93ID:Hj6igpz/
私の場合、ついつい std::vector<T> ではなく、std::vector<shared_ptr<T>> を使って済ませてしまうので、いつまでたってもコンテナを自作するスキルが上がらないよ。
「ぼくのかんがえたさいきょうのこんてな」を自作する精神力がまだまだ足りないようだ。反省。
0016デフォルトの名無しさん2016/11/27(日) 03:33:36.54ID:wer2Kop4
C++はコンテナの種類だけなら無駄に多いからな
0017デフォルトの名無しさん2016/11/27(日) 06:48:20.63ID:pUctI5IC
dequeとvectorは片方あればいいとかか
0018デフォルトの名無しさん2016/11/27(日) 09:24:27.84ID:SqUFXM7z
>>11
vectorはただのガワなんだから、速度が必要ならallocatorだけ自作すりゃいいだろ
0019デフォルトの名無しさん2016/11/27(日) 09:29:56.70ID:WW/pNH6a
連続性が保証できないから。
0020デフォルトの名無しさん2016/11/27(日) 09:53:11.77ID:Hj6igpz/
任天堂の倒し方知ってる系の人なら、当然のようにSTLを否定するだろう。
私は任天堂の倒し方知らないので、こういう人たちを心の底から尊敬する。
0021デフォルトの名無しさん2016/11/27(日) 10:42:14.10ID:P/uIEXU4
>>20
なぜそこまでSTLを否定したいのかよこ分からないなあ。
多くのケースで多くの人が使うのに必要十分な程度の機能、性能は持ってる訳だし、標準ライブラリとしては妥当な仕様かと思う。
これで不足な場合だけ自作のコンテナなりを考えればいいだけでしょ。
0022デフォルトの名無しさん2016/11/27(日) 10:58:23.07ID:Uyh6ikI3
>>8
何をいってるのか、意味不
0023デフォルトの名無しさん2016/11/27(日) 11:06:06.35ID:l9GcbBcF
いつものあれだろ?
「標準仕様書中の表現として、STLあるいはstandard template libraryなどという言葉は一回も使用されていない」
って言う。

厳格にこの言いつけを守ってる人がいるんだよ…
0024デフォルトの名無しさん2016/11/27(日) 11:26:05.74ID:Hj6igpz/
「STLのコンテナでは力不足」と言い切る優れたプログラマになりたいのだが、私はちっともそのレベルに到達できない。orz
0025デフォルトの名無しさん2016/11/27(日) 11:37:32.43ID:zdOfPVrj
婆ちゃんがイオンのことを今でもジャスコというのを聞くとちょっとイラッとする
STLという単語をみると同じような気持ちになるが
老人に新しいことを覚えさせるのが難しいと知っている俺は
そしらぬ顔で静観することにしている
0026デフォルトの名無しさん2016/11/27(日) 11:39:37.56ID:wer2Kop4
>>19
また古代からタイムスリップしてきた人ですか?
0027デフォルトの名無しさん2016/11/27(日) 11:44:52.34ID:qE9zLQzg
>>24
それ、優れたプログラマじゃない可能性がたっぷりある。
0028デフォルトの名無しさん2016/11/27(日) 11:48:02.44ID:MAcCGYLn
標準ライブラリは速くなる余地が無いわけではないな。
テンプレート特殊化を書いてやらないと解決出来ないときもある。
Visual C++の標準ライブラリが最近見直したら一部の処理が何十倍も速くなったと言っているくらいだ
0029デフォルトの名無しさん2016/11/27(日) 11:56:08.91ID:wer2Kop4
そりゃ実装依存のところは多い
規格書に事細かに記されているわけではない
しかしそれはコンテナのような昔からあって仕様がシンプルなクラスのことでは無いだろう
0030デフォルトの名無しさん2016/11/27(日) 12:10:55.75ID:Hj6igpz/
以下の文書によると、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
0031デフォルトの名無しさん2016/11/27(日) 12:12:18.35ID:MAcCGYLn
>>29
>規格書に事細かに記されているわけではない

突然関係ないことを言い出してどうした?
コンテナー自作する必要が有ったと主張する人に対してその必要性が全く理解できないという人がいたので
可能性はを示唆しただけだが。
0032デフォルトの名無しさん2016/11/27(日) 12:14:02.11ID:LAFeCFqG
algorithm系は使うもの使わないものがはっきりわかれない?
0033デフォルトの名無しさん2016/11/27(日) 12:17:16.89ID:Hj6igpz/
このスレは何人も天才プログラマが書き込んでるんだな。
STLで十分と思ってしまうレベルの低い私は、己の無能さで嫌悪感に陥りそうだ。
0034デフォルトの名無しさん2016/11/27(日) 12:17:28.71ID:wer2Kop4
>>30
C++のベンダーをやっている以上保守は義務だろ
MS独自のMFCはあまりにもゴミだが
CMapを使おうと思ったらあまりにも低機能すぎてキーボード破壊しそうになった
0035デフォルトの名無しさん2016/11/27(日) 12:28:42.78ID:plVb52Pg
>>32
adjacent_differenceの悪口はよせ
0036デフォルトの名無しさん2016/11/27(日) 12:41:27.00ID:Hj6igpz/
怠惰で無能な私は、bool で存在有無だけを返すストイックな binary_search() を使いこなせない。
ついつい、upper_bound()やlower_bound() を使ってしまう。
STLで事足りると思ってしまう自己暗示からどうしても抜け出せない。
このスレの天才プログラマーのようにSTLを捨てて「ぼくのかんがえたさいきょうのこんてな」に行くべきなのだが。
0037デフォルトの名無しさん2016/11/27(日) 13:18:21.08ID:+eKpaGRF
STLはあくまで汎用的で問題が起こりにくい作りになっているから
プログラムの用途に合った特殊なコンテナってことなら
自作する意味はあるかもしれない
例えば要素を削除するときに前詰めしないコンテナ、とか
そのコンテナには、どこが「空き」になっているか、別途把握できるしくみが
必要だけど、それはそういう風に実装すればよいだけだし
要は、連続的なメモリに確保されるけど、歯抜けになることが許されるコンテナ
ただしそんなに速くならないだろうね
0038デフォルトの名無しさん2016/11/27(日) 13:55:49.85ID:eIL19TgX
>>1は無能
自分で書いておきながらワッチョイ付けられないわ
ウンコード貼り付けるわ
0039デフォルトの名無しさん2016/11/27(日) 14:11:24.54ID:LAFeCFqG
>>36
むしろequal_rangeしか使わない
0040デフォルトの名無しさん2016/11/27(日) 14:12:23.15ID:Hj6igpz/
>>38
全くその通り。無能。恥を知れって感じ。
0041デフォルトの名無しさん2016/11/27(日) 14:50:05.59ID:w634zOe4
今時STLはないだろ
0042デフォルトの名無しさん2016/11/27(日) 15:08:20.29ID:P/uIEXU4
>>33
STLで十分と思うことは、別にレベルが低いとはならない。
STLで十分と思うことがレベルが低いというのは、レベルが低いと思う。

自分を卑下する書き込みをしつつ、高尚なこと考えている俺カッケーと酔いしれてないか?
0043デフォルトの名無しさん2016/11/27(日) 15:26:29.03ID:BLqqs723
それは己ちゃうんかいw
0044デフォルトの名無しさん2016/11/27(日) 15:55:56.37ID:3Qbc/l9n
>>42
ド素人の背伸びなんだからほっといてやれよw
下手につつくと居付いちゃうぞ
0045デフォルトの名無しさん2016/11/27(日) 15:56:46.93ID:SqUFXM7z
>>37
それってlistじゃないの?
0046デフォルトの名無しさん2016/11/27(日) 15:57:37.51ID:SqUFXM7z
>>45
失礼連続前提ね
0047デフォルトの名無しさん2016/11/27(日) 16:32:55.67ID:42UX/YwI
理解出来ないと時代遅れと言って反応を見ているんだろうが端から見ていて痛々しい限りだ
0048デフォルトの名無しさん2016/11/27(日) 16:49:01.91ID:2ZVZJ+KM
STLが理解できない?
お前さんだけじゃねw+
0049デフォルトの名無しさん2016/11/27(日) 17:08:21.71ID:LAFeCFqG
コンテナ、イテレータ、アルゴリズムの組合せ、という根っこにある考え方でまあ上手く行ってたんだけど、
今となってはちょっと古びた感じはするね。
<algorithm>のごちゃついた様を見るとそういうふうに思う。
0050デフォルトの名無しさん2016/11/27(日) 18:02:33.78ID:Hj6igpz/
>>42 のような面白い返答があったのでそろそろ真意を正直に書くと、
コンテナ自作派に憧れるていを取りつつコンテナ自作派をバカにしてただけだ。

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

>>37
「空き」の定義は開発者が決めなければならない。
コンテナに突っ込むクラスに「空き」フラグを扱うメンバ変数を追加すればSTLコンテナ利用で解決することを
わざわざ車輪の再発明でコンテナまで自作する人をおだててバカにするのは実に楽しい。
0051デフォルトの名無しさん2016/11/27(日) 18:11:22.15ID:MAcCGYLn
>コンテナ自作派をバカにしてると君らに察してもらえるだろうと思ってた

これは思った。気付かない奴はアスペ
0052デフォルトの名無しさん2016/11/27(日) 19:37:37.43ID:YEwu7XTV
俺も諄いなーと思いつつ黙って見てたけど、ストーレートに解釈してるやつが居るのみてビックリしたのと同時に、こんなに純真な心で2chやってて大丈夫なのかと心配になったわ。
あと、だからこのスレよく荒れてるんだなぁと納得した。
0053デフォルトの名無しさん2016/11/27(日) 19:49:28.80ID:4JtqQJ1X
ゲームとかなら、汎用性よりスピード命や小メモリとかで俺会社のSTLを作ってそうなきがするが
ゲーム制作会社とかではしているところはないのかな

>>1 はなんでshared_ptrのFILE deleterを張っているんだ
C++ならFILEじゃなくfstreamだろって気がするが
0054デフォルトの名無しさん2016/11/27(日) 20:14:35.31ID:Hj6igpz/
>>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);
  }
 }
0055デフォルトの名無しさん2016/11/27(日) 20:42:29.48ID:pUctI5IC
fstreamはfstreamで20余年の付き合いを経てもいまだにイミフなとこあるし
0056デフォルトの名無しさん2016/11/27(日) 20:47:34.07ID:P/uIEXU4
>>50
お前さんの真意とやらはどうでもいいから、面倒くさいことせずに、初めからもっと直接的に意味のある議論をしてほしい。
ここまでの流れで唯一ためになったのは、>>52のレスにあった「諄い」という漢字を知ったということだけだ。
0057デフォルトの名無しさん2016/11/27(日) 20:49:47.24ID:P/uIEXU4
>>53
ゲーム会社のことはよく知らないけど、そういうのはアロケータの自作でもしてるのかな。
0058デフォルトの名無しさん2016/11/27(日) 21:04:15.44ID:zEm283RN
ゲームエンジン・アーキテクチャによると
コンテナを自作するのは普通らしい
0059デフォルトの名無しさん2016/11/27(日) 21:13:33.19ID:kJvliJ+f
>>54
それ以前に、FILE"Deleleter"ってわざとしているのか
それともdeleteのスペル知らないのか
deleteはC++のキーワードだよな
operator FILE* () はcons抜けだし
0060デフォルトの名無しさん2016/11/27(日) 21:46:20.25ID:Hj6igpz/
>>59
何しろ無能だからこんなもんだろう。生温かく見守ってやれ。
0061デフォルトの名無しさん2016/11/27(日) 21:54:20.66ID:IYfuOepr
>>53
有名なのだとEASTLでオープンソース化されてる

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

ttps://github.com/electronicarts/EASTL
0062デフォルトの名無しさん2016/11/27(日) 21:59:03.95ID:WW/pNH6a
ベンチ取ってみたらどうか。
僕の古典的PCしかもノートでも驚くほど速い。
意外と問題にならない程度の速度を持っているのではないか。
0063デフォルトの名無しさん2016/11/27(日) 22:00:05.48ID:Hj6igpz/
>>59
勉強する良い機会になった。ありがとう。
https://ja.wikipedia.org/wiki/Cons
0064デフォルトの名無しさん2016/11/28(月) 00:27:42.27ID:nFYh94sG
type erasureのためだけにshared_ptrを持ち出さなければならないクソ言語
0065デフォルトの名無しさん2016/11/28(月) 13:41:28.68ID:VFe8unWC
SSEのイントリンシック使うとき16バイト境界にアライン必須なんで
stlに入れるとき用にアロケータだけ自作したことはあるな(コンテナの型自体変わってしまうので不便だけど
EASTLは知らんかった、家帰ったら使ってみよう
0066デフォルトの名無しさん2016/11/28(月) 17:31:28.84ID:w/GpYaDf
>>61
docディレクトリの文書でEAの中の人がSTLについて熱く語っているのが好感を持てた。
0067デフォルトの名無しさん2016/11/28(月) 21:08:56.39ID:w/GpYaDf
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 -
0068デフォルトの名無しさん2016/11/28(月) 21:12:50.29ID:w/GpYaDf
>>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
0069デフォルトの名無しさん2016/11/28(月) 21:22:19.20ID:w/GpYaDf
>>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 +
0070デフォルトの名無しさん2016/11/28(月) 21:47:38.32ID:w/GpYaDf
>>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 +
0071デフォルトの名無しさん2016/11/28(月) 22:16:01.54ID:aUTLhSnb
キモッ
0072デフォルトの名無しさん2016/11/28(月) 22:29:08.06ID:nxkexmqL
EASTLにコンテナの範囲外アクセスチェックとかのデバッグ機能ってある?
自分でもやってみるけど知ってる人いたら教えて欲しい
0073デフォルトの名無しさん2016/11/29(火) 03:57:58.52ID:JKfAWAo3
C++派八策

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

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

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

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

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

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

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

8.いざとなったら定義を変えろ。オブジェクト指向に固執するな。
0074デフォルトの名無しさん2016/11/29(火) 06:49:46.04ID:nF3eDud1
boost spiritって
LL(∞)パーサー生成すんの?
PEGパーサー生成するの?
LL法とPEG法wikipedia両方の実装例にこの名前のってあるんだけど
それとも両方とも実装してるの?
0075デフォルトの名無しさん2016/11/29(火) 10:54:07.14ID:FnERKnae
菅官房長官「ちょっと何言ってるかわかんない」
0076デフォルトの名無しさん2016/11/29(火) 13:08:19.85ID:nF3eDud1
4行目の「法」と「w」の間に格助詞の「の」が入る予定でした
0077デフォルトの名無しさん2016/11/29(火) 13:44:34.04ID:CM7LOPnj
プログラム的にいうと
LLは実装で使うアルゴリズムのひとつ
PEGは仕様を定義する表現(言語)のひとつ
で対立・排他関係にあるわけではない

boost.spiritはPEG形式で与えられたルールから構文解析器を作成するライブラリ
(作成された解析器はLL法で入力を解析する)
0078デフォルトの名無しさん2016/11/29(火) 18:41:17.09ID:nF3eDud1
>>77
ど素人の私にわざわざ回答をくださってありがとうございます。
これからも勉強に励みます
0079デフォルトの名無しさん2016/11/29(火) 18:46:41.16ID:GF2v+9TM
boost spiritってEBNFじゃなくてPEGだったんだな
使わんからどうでもいいが
0080デフォルトの名無しさん2016/11/29(火) 20:31:51.74ID:baTvYruL
いま趣味で囲碁ソフト作ってるんだけど
Cなんすよ。
いろいろ面倒なんでC++で
作りなおそうかと思案中です。

作成の労力は何割ぐらい
軽減するでしょうか?
0081デフォルトの名無しさん2016/11/29(火) 20:47:31.45ID:DmRk6e1B
増す
0082デフォルトの名無しさん2016/11/29(火) 20:55:01.08ID:1SK7brxW
その質問に答えられる人は誰一人としていないが
少なくともCより面倒になることは(熟練したC++プログラマなら)ありえないから
チャレンジしてみる価値はある
ただし、()の中が重要で、熟練したプログラマなら、という話
君がすごく筋がよいならC++はきっと役に立つはず
一方で筋が悪いというのはC++においては余計なことをやろうとすること
余計なことさえしなければ、Cより面倒になることはあり得ないし
逆に心に邪念があれば、Cとは別の意味で面倒な樹海に迷い込む
C++は書く人の心の中を映す鏡
0083デフォルトの名無しさん2016/11/29(火) 21:09:35.06ID:glNciwx+
Haxe(ヘックス)はOSSで、JSに型チェックを付けたような言語で(altJS)、
JS(ES5), Flash, PHP, C++, Java, C#, Python に書き出せる。
Windows8.1対応。IDEは、FlashDevelop

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

Haxeプログラミング入門、尾野政樹、2015
0084デフォルトの名無しさん2016/11/29(火) 21:16:52.64ID:bPmZgvzu
>>83
このコピペ時々見るけどヘイトHaxeの効果抜群だな
0085デフォルトの名無しさん2016/11/29(火) 21:19:45.31ID:X8I97SOu
>>80
レートどんくらい?
いちおープラスなんか?
0086デフォルトの名無しさん2016/11/29(火) 21:24:49.77ID:Ofu9bBqm
>>84
せやな。Mindに手を出すわ
0087デフォルトの名無しさん2016/11/29(火) 21:42:26.41ID:8ZPVrbbC
>>80
お前の能力によるとしか言えないんじゃないのか
ソースコードの量が多いと今のCをC++へ作り直す工程はかなりの労力だろな
0088デフォルトの名無しさん2016/11/29(火) 21:44:01.60ID:ua9E/pwR
いや、>>80は絶対にC++で書き直すべきだ!!
0089デフォルトの名無しさん2016/11/30(水) 06:56:30.70ID:UPCsGfLr
C++を「Cにvectorとかstringなんかの便利な型を追加した言語」と
割り切って使うなら手間は増えないんじゃないかな。

でも実際にC++で書き始めると、C++らしい書き方をしないと
恥ずかしいみたいな気持ちになって深みにはまることが多い。
0090デフォルトの名無しさん2016/11/30(水) 07:12:30.65ID:HOaAIIiu
>>80がgithubにソースを晒せば解決
0091デフォルトの名無しさん2016/11/30(水) 07:35:10.92ID:60EZvxwk
三割くらい減る
0092デフォルトの名無しさん2016/11/30(水) 08:50:24.62ID:AmbpRVJT
Cでいったん書いたんなら、そのときの反省点が色々あるだろ
それを踏まえてより上手くまとめるにはC++はいいツールだぜ
0093デフォルトの名無しさん2016/11/30(水) 09:01:18.76ID:WcEJDmm/
ぼくのかんがえるC++にしかできない超強力3大機能。
・自動的なデストラクタ呼び出し。
・moveコンストラクタと右辺値参照。
・ラムダ。
0094デフォルトの名無しさん2016/11/30(水) 09:03:12.26ID:WcEJDmm/
下の根の乾かないうちに訂正。

ぼくのかんがえるC++にしかできない超強力3大(5大?)機能。
・自動的なデストラクタ呼び出し。
・moveコンストラクタと右辺値参照。
・templateとlambda。
0095デフォルトの名無しさん2016/11/30(水) 09:05:34.45ID:WcEJDmm/
exceptionとRTTIはよく使うけど次点。

異論反論はもちろん認める。
0096デフォルトの名無しさん2016/11/30(水) 09:15:29.34ID:60EZvxwk
RTTIは使わないな
使うなって偉い人が言ってるし
0097デフォルトの名無しさん2016/11/30(水) 09:19:23.91ID:mG9+BxSG
なんで?(殺意)
0098デフォルトの名無しさん2016/11/30(水) 10:01:29.94ID:2V+M5QrA
RAIIの間違いじゃね?
RTTIをよく使うって違和感ある。
0099デフォルトの名無しさん2016/11/30(水) 10:25:44.68ID:TMG+JuRV
話題になっていた
STLと標準ライブラリと違うもの?
0100デフォルトの名無しさん2016/11/30(水) 11:41:28.64ID:AmbpRVJT
typeidをデバッグや実験でなく実用で使ったことが確かにないなあ
C++例外は嫌々しぶしぶ使ってるけど、クソすぎてため息
0101デフォルトの名無しさん2016/11/30(水) 12:37:13.96ID:60EZvxwk
例外ってなんか悪い部分あるの?
■ このスレッドは過去ログ倉庫に格納されています