1 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:54:00.55 ID:0DW9z0rL.net] ※前スレ C++相談室 part153 https://mevius.5ch.net/test/read.cgi/tech/1602339500/ テンプレここまで
357 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 14:15:41.43 ID:WjHCKOmN.net] >>347 using Aitem = std::pair<int, A>; using Aqueue = std::priority_queue<Aitem>, std::vector<Aitem>, [](const Aitem& lhs, const Aitem& rhs){ return lhs.first < rhs.first; }> Aqueue your_queue;
358 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 14:54:17.91 ID:bSEeGU13.net] >>345 ファイルスコープとローカルスコープは違うよ。 あと、今議論中なのはアンダースコアひとつで始まるメンバ変数についてなんで、アンダースコアの連続がアウトなのは誰でも知ってるし、餃子も324で書いてる
359 名前:デフォルトの名無しさん [2021/01/31(日) 15:06:11.72 ID:gXTMTlGe.net] 盛 り 上 が っ て ま い り ま し た ↑
360 名前:デフォルトの名無しさん [2021/01/31(日) 15:07:16.87 ID:gXTMTlGe.net] SRELLって知ってますか?
361 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 15:15:54.45 ID:ZnRwde8F.net] >>351 undersocre で始まる識別子は、Cの仕様ではこうなっています: 「All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.」 「undersocre で始まる識別子はfile scopeでは使用してはいけない」 とは言っておらず。 「undersocre で始まる識別子はfile scopeの識別子として使用される ことが予約されている」 と言っています。 with file scope の前置詞がなぜ in ではなく with になっているかは私には分かりかねますが、 その直後にも in が使われているので in が二重に使われるのを避けたのかも 知れません。
362 名前:デフォルトの名無しさん [2021/01/31(日) 15:18:08.68 ID:gXTMTlGe.net] inを踏むとか言ってみたくなるじゃないか。 責任とれ。
363 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 15:18:17.21 ID:ZnRwde8F.net] どうやら、 「identifiers with file scope」は、「ファイルスコープを持つ識別子」 であり、with は、「持つ」の意味で使われているようです、。
364 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 15:41:47.21 ID:bSEeGU13.net] >>354 予約されてるとはつまり使うなってことだけど、いずれにせよファイルスコープの話であって、ローカル変数の話じゃないよ。
365 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:03:58.33 ID:fCVb5Gn/.net] >>346 #define a(x) { int z = 1; z = x * 2; printf("%d",z);} int y = 5; a(y); int z = 5; a(z); これと何が違うの? 下線で始まることとは無関係だろ
366 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:08:45.08 ID:q0ry4PhJ.net] STLコンテナの継承ってしない方が良いんですかね? たとえばarrayに機能を追加 ([i][j] で i 行 j 列の要素を取得する等) して行列クラスを作りたいとき、 ・arrayを継承する ・行列クラス内で要素を格納するメンバを array として持つ の2パターンが考えられますが、皆さん的にはどっちが好ましいですか? 行列 is an array なので今こそ継承の使いどころだと思ったのですがいかがでしょうか
367 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:16:47.40 ID:WjHCKOmN.net] arrayは仮想デストラクタ持ってないからポリモは出来ない データ構造使うだけなら必要ない やめとけ
368 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:20:57.91 ID:NgKJGEE4.net] かか関数型マクロなら不用意に定義されていても int y = (a)(x) という書き方おすれば問題無くマクロじゃない関数a()の方が呼ばれるので問題無い! 事前に typedef double a; とかされていた場合は知らんが、
369 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:21:36.60 ID:2wqasnUt.net] 好きにしたら? C++なんて自己流全開で俺スゲーしてなんぼ、他人の顔色伺ってたらダメ 行列なんてプロダクションではどうせ出来合いのライブラリ使うんだし
370 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:22:25.80 ID:q0ry4PhJ.net] >>360 じゃあメンバとして要素(array)を持てば良いってことですよね? []の定義の仕方はわかるのですが、[][]ってどうやって定義するんでしたっけ?
371 名前:はちみつ餃子 mailto:sage [2021/01/31(日) 16:27:00.30 ID:+XHxoAeu.net] >>363 直接には出来ない。 (二引数を受け取れるようにしようという提案はある。) operator[] を持つ別のクラス (のオブジェクト) を返すという形で実装する。
372 名前:デフォルトの名無しさん [2021/01/31(日) 16:27:38.50 ID:X7lGC0go.net] case by case だろうけど Array と Matrix に関してなら 直観的に考えると後者かな 継承する意味が無い
373 名前:デフォルトの名無しさん [2021/01/31(日) 16:30:29.11 ID:X7lGC0go.net] [][][]だと3引数になるの? [][][][]だと4引数になるの? って疑問が出るので operator[] を持つ自分自身のクラス (のオブジェクト)が正解だと思う
374 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:31:13.60 ID:NgKJGEE4.net] std::array<std::vector<double> > x; みたいな
375 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:32:01.22 ID:NgKJGEE4.net] ジャグ配列になってしまう…orz
376 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:32:06.68 ID:fCVb5Gn/.net] 継承といえば type_infoは仮想デストラクタ持ってるけど 派生クラス作ったやついる? 実験でなく
377 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:34:24.04 ID:ZnRwde8F.net] >>358 命名規約に従って変数名をつけていれば、>>346 のマクロはバグらない。 一方、>>358 のマクロは、命名規約に従って合法的に定義されたローカル 変数zに対して使ってもバグる。 その違い。
378 名前:はちみつ餃子 mailto:sage [2021/01/31(日) 16:34:43.94 ID:+XHxoAeu.net] >>366 operator{] にこだわらずに要素にアクセスするメンバ関数を用意するのでもそんなに困らない。 見栄えだけの問題。 まあ見栄えも大事なんだけど。
379 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:36:28.41 ID:ZnRwde8F.net] >>357 そうではなく、_xxx は、グローバル変数で使うことが予約されているので、 ローカル変数では使ってはならない、と読み取れるように思う。
380 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:38:11.57 ID:q0ry4PhJ.net] >>366 すみません。どう書いたら良いのか分かりません []は int& operator [] (int i) {return elem[i];} みたいな感じですよね?
381 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:43:15.04 ID:fCVb5Gn/.net] >>370 そのためにinlineとconstexprが用意されてるわけだが なぜマクロで作らなければならないんだ? どこぞのOS屋がmaxなんてクソマクロ作ってたせいで みんな迷惑してたよな
382 名前:はちみつ餃子 mailto:sage [2021/01/31(日) 16:45:04.61 ID:+XHxoAeu.net] >>372 ファイルスコープで予約されている名前とローカル変数で名前がかぶっても 単にシャドウされるだけなので衝突しない。 ローカル変数名として使うべきでないという理由にならない。
383 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:51:19.01 ID:ZnRwde8F.net] >>370 [補足] マクロ引数が二重に評価されてしまうのを防ぐため、マクロ作者が 気を利かせたつもりで次のようなマクロを書いたとする: #define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } 作者の意図としては、 char *ptr1, *ptr2; b(*ptr1++, *ptr2++); のような場合にも正しく動作するようにしたいということで、 この場合は、*ptr1++, *ptr2++ は、それぞれ1回ずつ評価されるので、 ptr1, ptr2 は、それぞれ 1ずつ前に進むので、アプリ作者の意図を 組むことが出来る。 一方、使う側が命名規約に従わず、アプリのローカル変数で_x,_yを定義し、 int _x=1; int _y=2; b(_y,_x); とすると、このマクロは誤動作し、 int x=1; int y=2; b(y,x); と書いたときと結果が変わってくる。
384 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:55:15.98 ID:wwbd/Qx2.net] こういうクソしょーもない話って馬鹿でも理解できるから盛り上がるよね
385 名前:デフォルトの名無しさん [2021/01/31(日) 16:57:55.61 ID:ZnRwde8F.net] >>375 まあ、そうなんだけども、多分、英語の意味をそのまま素直に汲み取れば、 単純に>>372 の意味のはず。 またそれは>>376 のような状況を防ぐことが出来る。 >>374 まあ実際それはそういうこともあることは有るが、マクロでしか書けないような 例もあるわけで、>>376 のようなマクロ作者のせっかくの配慮が、命名規約 を破って書かれたアプリでは逆効果になってしまうことがある。
386 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:00:34.53 ID:ZnRwde8F.net] [補足] なお、Cの伝統だと、 #define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } ではなく、 #define b(x,y) do {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } while(0) と書く。 こうしておくと、このマクロを{}ブロックを伴わないif文に書いたときに異常動作 をしない。
387 名前:はちみつ餃子 mailto:sage [2021/01/31(日) 17:08:36.84 ID:+XHxoAeu.net] >>378 素直に読めばグローバルスコープで予約されているものは グローバルスコープで予約されているという意外の意味を読み取ることは出来ない。 そこからローカル変数も制約されるという主張が出てくる理由が不在なんで、 何を言うてんのやろ……? ってなるわけ。
388 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:11:34.77 ID:ziXVeJXQ.net] >>350 in instantiation of function template specialization ... requested here というエラーが出ます
389 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:14:33.59 ID:fCVb5Gn/.net] >>376 だから二重評価が問題になるようなことをマクロでやるなって その例だってinlineで書けるだろ 邪道なやり方を保護するために 本筋が迷惑を被るのは本末転倒だ
390 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:15:05.39 ID:ZnRwde8F.net] >>380 「All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.」 「file scopeを持つ識別子として使用されるために予約されている」 だべ? block scopeを持つ識別子として使用されたら、話がおかしいと思うが。 「この自動車は、仕事で使うために予約されています」 の場合、その自動車を私用で使えば、規則違反だよね。
391 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:15:45.54 ID:fCVb5Gn/.net] int _x; //こんなのがあっても #define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } //ブロックスコープで保護されるだろうが
392 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:19:07.49 ID:ZnRwde8F.net] >>382 でも、_ が最初に来る名前をアプリが使っちゃいけない、というのは伝統的にそういう ことが一番の目的だと思うぞ。 もう一つは、コンパイラの内部でこっそり使う場合があって、それと知らないうちに 衝突する可能性が僅かにあるため。 なぜこっそり使うかと言うと、絶対に衝突しないようにコンパイラ側を 書こうとするとコンパイラ作りに手間がかかるから。 もし、アプリ側が命名規約を守ってくれていれば、コンパイラ作りが楽になる ことがある。
393 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:20:06.45 ID:ZnRwde8F.net] >>384 b(_y,_x) と書いたらどうなるか考えてみたらしだんご。
394 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:25:17.52 ID:fCVb5Gn/.net] >>385 おまえさんはコンパイラ屋か? そうだとして同業者は__builtin_va_argのように注意深くやってるぞ 自分らのエゴのために客に制限をかけるようなことを でかい声で叫びまくるのはやめてくれ
395 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:30:48.87 ID:ZnRwde8F.net] >>387 まあ、本当はコンパイラ内部でこっそり使う場合、絶対に衝突しないような もっと変な名前を使っているから大丈夫なんだ。 起動時の TickCounter の値を変数名の一部に入れたりとかね。
396 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:37:15.73 ID:2WBeknRq.net] >>383 ローカルスコープで同じ名前の別変数を定義するのは「その自動車を私用で使う」ことには当たらないって言ってるの
397 名前:デフォルトの名無しさん [2021/01/31(日) 17:42:24.07 ID:/1NNOLNs.net] ヘッダーファイルに書くか、ソースファイルに書くかの違いも大きい。 ヘッダーファイルに書くときは名前衝突に対する細心の注意が必要。
398 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:45:15.36 ID:fCVb5Gn/.net] >>386 {int _x=_y; int _y=_x; f(_x,_y); g(_x,_y); } どうなるって言いたいんだ?
399 名前:デフォルトの名無しさん [2021/01/31(日) 17:51:16.48 ID:/1NNOLNs.net] C/C++の場合、スコープだけ意識するのは不十分で、ヘッダーかソースかで厳格さを変える柔軟性が必要。 ヘッダーに書くと影響範囲が大きいから。
400 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:57:13.23 ID:fCVb5Gn/.net] テンプレートなんか普通にヘッダに内容全部を書くが マクロでバカやるやつがいなければ平和だよ
401 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:58:49.95 ID:A8yllSCF.net] ローカルスコープでも _x が禁止だというなら >>346 のマクロ a 定義内で _x を使っていい理屈もわからんよな。
402 名前:デフォルトの名無しさん [2021/01/31(日) 18:55:26.91 ID:gXTMTlGe.net] std::pair<>を継承してquadを作る場合どうなりますか?
403 名前:デフォルトの名無しさん [2021/01/31(日) 18:58:05.19 ID:gXTMTlGe.net] std::regexが意外と使える子に成長してますが、標準化委員会では捨て去る提案まで出てるそうで。
404 名前:デフォルトの名無しさん [2021/01/31(日) 19:37:14.68 ID:/1NNOLNs.net] std::regexはプロパティが貧弱なので結局、従来の正規表現ライブラリ使う羽目になる。 std::regexと互換性のあるインターフェースを持つ正規表現クラスを提供するよう呼びかけるのが現実的。
405 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 19:51:04.44 ID:vFnk+kXo.net] 順序付き pair って自分で順番に格納するのと2要素のsetにするのどっちが良いですか
406 名前:デフォルトの名無しさん [2021/01/31(日) 20:39:53.24 ID:/1NNOLNs.net] pairはSTLのアルゴリズムの恩恵を得るための物。 自宅の郵便受けを豪華にしたところで、郵便事業には何の関係もない。ただの趣味の世界。
407 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 21:08:09.18 ID:vFnk+kXo.net] set< pear<int, int> > で、ある数を含む pear を高速に検索する方法ってある?
408 名前:デフォルトの名無しさん [2021/01/31(日) 21:47:36.00 ID:jyYnHelr.net] set<int, vector<pair<int,int>*>> 元の集合に1億個程度のペアが入ってるとすると、住所録めいたものをあらかじめ生成しておく 配列でやっても速そう list[m].empty() こういうリストで空っぽかどうかわかればいいわけだ vector<vector<pair<int,int>*>>>; それならドでかい二次元配列に入れた方がラクかもしれない 連想配列でも出来る map<int ,vector<pair<int,int>*>>> 静的な話だったが動的つまり追加と検索が交互に起こるとおそらく話は違ってくる 全部試して早かったモンが高速である、程度の他愛ない結論に落ち着く
409 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 22:01:19.63 ID:gvpDZJRs.net] 構造体にしろよバカども 読みにくいだろ
410 名前: mailto:sage [2021/01/31(日) 22:54:08.94 ID:wKQ2AmTw.net] >>333 >>339 では _x ではなく x_ にしようっかな‥‥
411 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 23:01:41.96 ID:eyFvwlDf.net] googleスタイルガイドはそちらを推してるな
412 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 01:17:42.16 ID:FSry25xS.net] >>391 int _x=_y; int _y=_x; ここの二行目の右辺の_xは、b(_y,_x)の第二引数の_xではなく、一行目 で宣言した_xになっているので、b(_y,_x)の第一引数の_yになる。つまり、 int _x=引数の_y; int _y=引数の_y; となるので、{}の中の_x, _yは、どちらも引数の_yの値に等しくなってしまう。 これではマクロ作者が意図したことではなくなってしまう。
413 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 01:19:32.38 ID:FSry25xS.net] >>394 まあ、それはもっともな指摘なのだが、アプリ本体では使用禁止で、 マクロでは使用可能と勝手に解釈してしまうのが一つの流儀。
414 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 01:22:56.68 ID:FSry25xS.net] >>389 そうではなくて、ローカルスコープで使うことそのものが、file scope で使ってないことに当たるので、規約違反と言うことになると解釈できる 気がするんだ。 なぜそんなルールにしたのかは分からんがな。
415 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 03:22:30.15 ID:fw9rYrIy.net] >>405 残念だったね。インライン関数使おうね。 >>406 あなたの流儀を規格の定めであるかのように話すのは迷惑なのでやめてくださいね。 >>407 file scope で予約されてる名前を file scope で使ってないなら問題ないね。 規約違反などという解釈にはならない。気のせい。そんなルールになってない。ってことで終われよ。
416 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 07:01:58.51 ID:v6ebtUL1.net] >>400 unordered_map<int, int>
417 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 07:30:17.18 ID:LhepLs74.net] >>406 マクロ定義内の仮引数名は当のマクロ定義外の何者とも関係しないのでは… いわゆる束縛変数
418 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 07:38:30.21 ID:LhepLs74.net] として安全に取り扱われる 一方>>346 の_xはa(x)が展開された結果が他のプリプロセッサ定義で再置換され得るなら危険 これが起きるかはプリプロセッサの仕様(規格)を見たら白黒付くが 個人的には君子なので危うきには近づかないことに死体、
419 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 08:09:47.67 ID:v6ebtUL1.net] うちの若いのがあんなアホマクロ書いてたら張っ倒す まあ、やらかしそうなのはいないけど
420 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 09:26:53.82 ID:5yr9aQzL.net] >>346 そもそもそのマクロで生成される変数はファイルスコープでないから、そもそも問題外では? 仮にファイルスコープな変数を宣言するようなマクロでも、ユーザが意図せず
421 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 11:43:32.41 ID:xFB8fPis.net] 仕事に情熱が持てなくなった
422 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 11:43:38.91 ID:VhfMLcQM.net] >>346 アホだ
423 名前:デフォルトの名無しさん [2021/02/01(月) 12:06:54.06 ID:ZelzH3+k.net] >>414 コロナの影響だろな。 福島大爆発の影響も計り知れない。 「原爆ぶらぶら病」で検索してください。
424 名前:デフォルトの名無しさん [2021/02/01(月) 12:30:15.68 ID:jyRtFT93.net] >>408 >file scope で予約されてる名前を file scope で使ってないなら問題ないね。 そうじゃない。 英語原文を読めば、file scopeで予約されているのではなく、file scopeで 使用するために予約されているのだ。 だから、file scope以外で使用することが禁止されている。
425 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 12:32:18.30 ID:jyRtFT93.net] >>417 日本語で言うなら、「file scope 専用」。
426 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 12:46:40.95 ID:/T40sBmV.net] >>414 ちゃんと飯を食え。 週末はちゃんち休め。 年10日は連続した休暇をとれ
427 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 12:55:04.41 ID:ioMwojjO.net] >>417 その一文ばっかりやたらこだわるけど これが属しているセクションの名前って「17.4.3.1.2 Global names」なんだわ グローバル名前空間の名前以外については言及してないの ドラフトならインターネットで無料で見られるんだからこの辺の全容見てきな?
428 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 13:14:13.18 ID:Z79JHlVc.net] >>417 あらゆる場所で使ってはいけないのなら、7.1.3でわざわざ1つ目と対比させるように使用用途を限定して記載した理由を説明してよ。 普通はコンパイラ実装者のために予約されている、だけで十分でしょ
429 名前:デフォルトの名無しさん [2021/02/01(月) 13:45:48.95 ID:fos4FOVO.net] 仕事に情熱が持てなくなった
430 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 13:50:50.97 ID:jyRtFT93.net] https://www.learncpp.com/cpp-tutorial/keywords-and-naming-identifiers/comment-page-2/ Second, you should avoid naming your identifiers starting with an underscore, as these names are typically reserved for OS, library, and/or compiler use.
431 名前:デフォルトの名無しさん [2021/02/01(月) 14:08:01.06 ID:fos4FOVO.net] >>373 obj& operator [] (int i) {return elem[i];} もちろんelem[]の定義はobj elem[]; obj.shape() も実装すると便利
432 名前:デフォルトの名無しさん [2021/02/01(月) 14:13:00.08 ID:fos4FOVO.net] >>416 「コロナでゴロゴロ病」
433 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 15:47:43.70 ID:Z79JHlVc.net] >>423 そのサイトを紹介して何の証明になるの?
434 名前:デフォルトの名無しさん [2021/02/01(月) 16:16:30.24 ID:ZelzH3+k.net] >>426 https://isocpp.org/
435 名前:デフォルトの名無しさん [2021/02/01(月) 16:22:14.79 ID:ZelzH3+k.net] C++ is the only real language for expert developers.
436 名前:デフォルトの名無しさん [2021/02/01(月) 16:55:19.50 ID:fos4FOVO.net] C/C++は好きだし比較的最強の部類だと思うけど 夢未過ぎは判断を誤るから色んな言語を適材適所に使えるようになるのが理想
437 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 17:40:26.58 ID:LhepLs74.net] システム記述言語はアセンブラを除けばこの世にCとC++とRustしか、
438 名前:デフォルトの名無しさん [2021/02/01(月) 17:46:42.82 ID:ZelzH3+k.net] 中国人のありがたいお言葉ですぞ。
439 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 18:02:36.06 ID:jyRtFT93.net] 大体、この板には中国人や韓国人はほとんど来ず、来ているのはアメリカ人 やヨーロッパやアフリカが多いらしい。
440 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 18:44:36.44 ID:+21BJdPm.net] いやrustが最強でしょww
441 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 18:47:23.23 ID:CDWd/LQ7.net] Goは駄目なん?
442 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 18:57:50.94 ID:0s4gr52A.net] 自作の構造体をsetに入れたいときって operator < さえ定義しとけば良いの? eraseとかは全部のメンバが同じものを見つけて消してくれると思って良い?
443 名前:デフォルトの名無しさん [2021/02/01(月) 21:08:59.66 ID:ZelzH3+k.net] 検索するとひろみをお勧めしてくる時点で無理だった。
444 名前:デフォルトの名無しさん [2021/02/01(月) 21:34:17.50 ID:ZelzH3+k.net] しかもチップも取るんかーい!
445 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 22:43:42.23 ID:CtNYZU7D.net] >>435 erase含め、同値性は!(a<b)&&!(b<a)で判定される 全メンバ一致で同値と
446 名前:ンなしたいなら辞書順比較する比較関数を定義すればよし [] [ここ壊れてます]
447 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 22:46:24.33 ID:FbSt8IWH.net] 演算子オーバーロードは地雷度高い。
448 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 22:53:14.56 ID:CtNYZU7D.net] まあ、setに入れるためだけなら演算子オーバーロードするより関数オブジェクト使う方がいいかね
449 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 23:03:45.93 ID:f9q1oLiO.net] C++の質問じゃないとは思うんですが、上位数ビットを0で埋めたいといった場合は 「0埋めしたいビットを0、他を1にしたもので&演算する」 であってますか?
450 名前:デフォルトの名無しさん [2021/02/01(月) 23:11:37.27 ID:ZelzH3+k.net] 合ってます。
451 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 23:17:45.03 ID:f9q1oLiO.net] >>442 ありがとうございます 今までは例えばQWORDの上位3バイトを0埋めしたいってとき(value << 3*8) >> 3*8って言う2命令使う馬鹿な方法でやっていました・・・
452 名前:デフォルトの名無しさん [2021/02/02(火) 02:08:00.00 ID:DmcXRB7X.net] へ椅子ブックが少し綺麗になってます。
453 名前:デフォルトの名無しさん [2021/02/02(火) 02:10:27.05 ID:DmcXRB7X.net] RedditのC++コミュは17万人、オンラインが500人以上。 凄いね。
454 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 10:17:10.33 ID:uFATDe77.net] ビット演算の中で最速なのってシフトじゃなかったっけ? だから下手したら>>443 の方がフェムト秒レベルでは微妙に早いんじゃない?
455 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 10:29:21.33 ID:kGc73xZq.net] 命令語長がマスク分だけでもQWORDに対して、シフトなら1バイト程度か
456 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 12:37:23.36 ID:vWAdhQ36.net] >>446 CPUの世代やアーキテクチャによって違うが、 Latencyが、Shiftの方がandより少し遅いことがある。
457 名前:はちみつ餃子 mailto:sage [2021/02/02(火) 12:49:48.88 ID:+MtixY9O.net] >>434 Go は GC が前提にあるから少し制約が強いけども、 OS のカーネルを書くのでもない限り思ったより足かせにならないという評価はあるみたいだね。