21/01/31 19:51:04.44 vFnk+kXo.net
順序付き pair って自分で順番に格納するのと2要素のsetにするのどっちが良いですか
406:デフォルトの名無しさん
21/01/31 20:39:53.24 /1NNOLNs.net
pairはSTLのアルゴリズムの恩恵を得るための物。
自宅の郵便受けを豪華にしたところで、郵便事業には何の関係もない。ただの趣味の世界。
407:デフォルトの名無しさん
21/01/31 21:08:09.18 vFnk+kXo.net
set< pear<int, int> > で、ある数を含む pear を高速に検索する方法ってある?
408:デフォルトの名無しさん
21/01/31 21:47:36.00 jyYnHelr.net
set<int, vector<pair<int,int>*>>
元の集合に1億個程度のペアが入ってるとすると、住所録めいたものをあらかじめ生成しておく
配列でやっても速そう
list[m].empty()
こういうリストで空っぽかどうかわかればいいわけだ
vector<vector<pair<int,int>*>>>;
それならドでかい二次元配列に入れた方がラクかもしれない
連想配列でも出来る
map<int ,vector<pair<int,int>*>>>
静的な話だったが動的つまり追加と検索が交互に起こるとおそらく話は違ってくる
全部試して早かったモンが高速である、程度の他愛ない結論に落ち着く
409:デフォルトの名無しさん
21/01/31 22:01:19.63 gvpDZJRs.net
構造体にしろよバカども
読みにくいだろ
410:
21/01/31 22:54:08.94 wKQ2AmTw.net
>>333
>>339
では _x ではなく x_ にしようっかな‥‥
411:デフォルトの名無しさん
21/01/31 23:01:41.96 eyFvwlDf.net
googleスタイルガイドはそちらを推してるな
412:デフォルトの名無しさん
21/02/01 01:17:42.16 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:デフォルトの名無しさん
21/02/01 01:19:32.38 FSry25xS.net
>>394
まあ、それはもっともな指摘なのだが、アプリ本体では使用禁止で、
マクロでは使用可能と勝手に解釈してしまうのが一つの流儀。
414:デフォルトの名無しさん
21/02/01 01:22:56.68 FSry25xS.net
>>389
そうではなくて、ローカルスコープで使うことそのものが、file scope
で使ってないことに当たるので、規約違反と言うことになると解釈できる
気がするんだ。
なぜそんなルールにしたのかは分からんがな。
415:デフォルトの名無しさん
21/02/01 03:22:30.15 fw9rYrIy.net
>>405
残念だったね。インライン関数使おうね。
>>406
あなたの流儀を規格の定めであるかのように話すのは迷惑なのでやめてくださいね。
>>407
file scope で予約されてる名前を file scope で使ってないなら問題ないね。
規約違反などという解釈にはならない。気のせい。そんなルールになってない。ってことで終われよ。
416:デフォルトの名無しさん
21/02/01 07:01:58.51 v6ebtUL1.net
>>400
unordered_map<int, int>
417:デフォルトの名無しさん
21/02/01 07:30:17.18 LhepLs74.net
>>406
マクロ定義内の仮引数名は当のマクロ定義外の何者とも関係しないのでは…
いわゆる束縛変数
418:デフォルトの名無しさん
21/02/01 07:38:30.21 LhepLs74.net
として安全に取り扱われる
一方>>346の_xはa(x)が展開された結果が他のプリプロセッサ定義で再置換され得るなら危険
これが起きるかはプリプロセッサの仕様(規格)を見たら白黒付くが
個人的には君子なので危うきには近づかないことに死体、
419:デフォルトの名無しさん
21/02/01 08:09:47.67 v6ebtUL1.net
うちの若いのがあんなアホマクロ書いてたら張っ倒す
まあ、やらかしそうなのはいないけど
420:デフォルトの名無しさん
21/02/01 09:26:53.82 5yr9aQzL.net
>>346
そもそもそのマクロで生成される変数はファイルスコープでないから、そもそも問題外では?
仮にファイルスコープな変数を宣言するようなマクロでも、ユーザが意図せず
421:デフォルトの名無しさん
21/02/01 11:43:32.41 xFB8fPis.net
仕事に情熱が持てなくなった
422:デフォルトの名無しさん
21/02/01 11:43:38.91 VhfMLcQM.net
>>346
アホだ
423:デフォルトの名無しさん
21/02/01 12:06:54.06 ZelzH3+k.net
>>414
コロナの影響だろな。
福島大爆発の影響も計り知れない。
「原爆ぶらぶら病」で検索してください。
424:デフォルトの名無しさん
21/02/01 12:30:15.68 jyRtFT93.net
>>408
>file scope で予約されてる名前を file scope で使ってないなら問題ないね。
そうじゃない。
英語原文を読めば、file scopeで予約されているのではなく、file scopeで
使用するために予約されているのだ。
だから、file scope以外で使用することが禁止されている。
425:デフォルトの名無しさん
21/02/01 12:32:18.30 jyRtFT93.net
>>417
日本語で言うなら、「file scope 専用」。
426:デフォルトの名無しさん
21/02/01 12:46:40.95 /T40sBmV.net
>>414
ちゃんと飯を食え。
週末はちゃんち休め。
年10日は連続した休暇をとれ
427:デフォルトの名無しさん
21/02/01 12:55:04.41 ioMwojjO.net
>>417
その一文ばっかりやたらこだわるけど
これが属しているセクションの名前って「17.4.3.1.2 Global names」なんだわ
グローバル名前空間の名前以外については言及してないの
ドラフトならインターネットで無料で見られるんだからこの辺の全容見てきな?
428:デフォルトの名無しさん
21/02/01 13:14:13.18 Z79JHlVc.net
>>417
あらゆる場所で使ってはいけないのなら、7.1.3でわざわざ1つ目と対比させるように使用用途を限定して記載した理由を説明してよ。
普通はコンパイラ実装者のために予約されている、だけで十分でしょ
429:デフォルトの名無しさん
21/02/01 13:45:48.95 fos4FOVO.net
仕事に情熱が持てなくなった
430:デフォルトの名無しさん
21/02/01 13:50:50.97 jyRtFT93.net
URLリンク(www.learncpp.com)
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:デフォルトの名無しさん
21/02/01 14:08:01.06 fos4FOVO.net
>>373
obj& operator [] (int i) {return elem[i];}
もちろんelem[]の定義はobj elem[];
obj.shape() も実装すると便利
432:デフォルトの名無しさん
21/02/01 14:13:00.08 fos4FOVO.net
>>416
「コロナでゴロゴロ病」
433:デフォルトの名無しさん
21/02/01 15:47:43.70 Z79JHlVc.net
>>423
そのサイトを紹介して何の証明になるの?
434:デフォルトの名無しさん
21/02/01 16:16:30.24 ZelzH3+k.net
>>426
URLリンク(isocpp.org)
435:デフォルトの名無しさん
21/02/01 16:22:14.79 ZelzH3+k.net
C++ is the only real language for expert developers.
436:デフォルトの名無しさん
21/02/01 16:55:19.50 fos4FOVO.net
C/C++は好きだし比較的最強の部類だと思うけど
夢未過ぎは判断を誤るから色んな言語を適材適所に使えるようになるのが理想
437:デフォルトの名無しさん
21/02/01 17:40:26.58 LhepLs74.net
システム記述言語はアセンブラを除けばこの世にCとC++とRustしか、
438:デフォルトの名無しさん
21/02/01 17:46:42.82 ZelzH3+k.net
中国人のありがたいお言葉ですぞ。
439:デフォルトの名無しさん
21/02/01 18:02:36.06 jyRtFT93.net
大体、この板には中国人や韓国人はほとんど来ず、来ているのはアメリカ人
やヨーロッパやアフリカが多いらしい。
440:デフォルトの名無しさん
21/02/01 18:44:36.44 +21BJdPm.net
いやrustが最強でしょww
441:デフォルトの名無しさん
21/02/01 18:47:23.23 CDWd/LQ7.net
Goは駄目なん?
442:デフォルトの名無しさん
21/02/01 18:57:50.94 0s4gr52A.net
自作の構造体をsetに入れたいときって operator < さえ定義しとけば良いの?
eraseとかは全部のメンバが同じものを見つけて消してくれると思って良い?
443:デフォルトの名無しさん
21/02/01 21:08:59.66 ZelzH3+k.net
検索するとひろみをお勧めしてくる時点で無理だった。
444:デフォルトの名無しさん
21/02/01 21:34:17.50 ZelzH3+k.net
しかもチップも取るんかーい!
445:デフォルトの名無しさん
21/02/01 22:43:42.23 CtNYZU7D.net
>>435
erase含め、同値性は!(a<b)&&!(b<a)で判定される
全メンバ一致で同値と�
446:ンなしたいなら辞書順比較する比較関数を定義すればよし
447:デフォルトの名無しさん
21/02/01 22:46:24.33 FbSt8IWH.net
演算子オーバーロードは地雷度高い。
448:デフォルトの名無しさん
21/02/01 22:53:14.56 CtNYZU7D.net
まあ、setに入れるためだけなら演算子オーバーロードするより関数オブジェクト使う方がいいかね
449:デフォルトの名無しさん
21/02/01 23:03:45.93 f9q1oLiO.net
C++の質問じゃないとは思うんですが、上位数ビットを0で埋めたいといった場合は
「0埋めしたいビットを0、他を1にしたもので&演算する」
であってますか?
450:デフォルトの名無しさん
21/02/01 23:11:37.27 ZelzH3+k.net
合ってます。
451:デフォルトの名無しさん
21/02/01 23:17:45.03 f9q1oLiO.net
>>442
ありがとうございます
今までは例えばQWORDの上位3バイトを0埋めしたいってとき(value << 3*8) >> 3*8って言う2命令使う馬鹿な方法でやっていました・・・
452:デフォルトの名無しさん
21/02/02 02:08:00.00 DmcXRB7X.net
へ椅子ブックが少し綺麗になってます。
453:デフォルトの名無しさん
21/02/02 02:10:27.05 DmcXRB7X.net
RedditのC++コミュは17万人、オンラインが500人以上。
凄いね。
454:デフォルトの名無しさん
21/02/02 10:17:10.33 uFATDe77.net
ビット演算の中で最速なのってシフトじゃなかったっけ?
だから下手したら>>443の方がフェムト秒レベルでは微妙に早いんじゃない?
455:デフォルトの名無しさん
21/02/02 10:29:21.33 kGc73xZq.net
命令語長がマスク分だけでもQWORDに対して、シフトなら1バイト程度か
456:デフォルトの名無しさん
21/02/02 12:37:23.36 vWAdhQ36.net
>>446
CPUの世代やアーキテクチャによって違うが、
Latencyが、Shiftの方がandより少し遅いことがある。
457:はちみつ餃子
21/02/02 12:49:48.88 +MtixY9O.net
>>434
Go は GC が前提にあるから少し制約が強いけども、
OS のカーネルを書くのでもない限り思ったより足かせにならないという評価はあるみたいだね。
458:デフォルトの名無しさん
21/02/02 13:08:50.07 aIAA0dxH.net
Goはクソすぎるから駄目だ
何が駄目といってまず名前が駄目
459:デフォルトの名無しさん
21/02/02 13:45:57.34 8HFbTrXI.net
GoはPC初心者用
昔でいういわばBASIC
460:デフォルトの名無しさん
21/02/02 18:03:08.15 FSwj4KRK.net
バレルシフタと単純ゲート
レイテンシも糞もねえだろ
461:デフォルトの名無しさん
21/02/02 18:11:36.53 8HFbTrXI.net
でもその縛りプレイが大好きな変人も居る
462:デフォルトの名無しさん
21/02/02 22:23:15.74 likaPPB8.net
operator ==も定義しておくとなお良い
==のために<が2回呼ばれるのもアホらしいと感じるはず…
結局std::rel_opsを使って全部定義するという結論に落ち着く
463:デフォルトの名無しさん
21/02/02 22:25:04.30 likaPPB8.net
インテルのやつはバレルシフタじゃない気配がする…
シフト結果をテーブル化した方が速かったことg
464:デフォルトの名無しさん
21/02/02 22:28:35.48 likaPPB8.net
あるいは最大限バレルシフタにしようとしているがパイプライン1段に収まっていないだけかもしれん…
465:はちみつ餃子
21/02/03 00:25:34.21 p0NvFN6a.net
>>443
gcc, clang, msvc で最適化最大で試してみたら and をとるように最適化されたぞ。
主要コンパイラがそのように最適化するということは (前後の状況によるかもしれないけど)
たぶん and のほうが効率的ってことなんだろう。
466:デフォルトの名無しさん
21/02/03 00:38:50.10 53EFMpkm.net
ビットシフトは64bit整数でのコンパイラ解釈が信用できないからAND演算子使うのが確実だと思うけどどうかな。
467:デフォルトの名無しさん
21/02/03 00:51:08.70 5b6XJ+8s.net
>>458
落ち着いてよく考えてみよう
お前がC++で作った成果物のうち、お前自身が書いたコードの割合なんてごくごく僅かに過ぎない
仮にそんなレベルで互換性が当てにならないような環境があったとして、お前が直接書いていない他の99%のコードがまともに動くと本気で思うか?
468:はちみつ餃子
21/02/03 00:54:51.58 p0NvFN6a.net
0xffffffffff とか書いてたら桁数を正しく書けてるか不安になる……
今の C++ だと桁区切りも入れられるけど、
どう入れたら意図がわかりやすいかようわからんし、
シフトで表現するのもありな選択だと思う。
469:デフォルトの名無しさん
21/02/03 01:01:02.57 +m9V7fCu.net
>>458
具体例をお願いできますか?
470:デフォルトの名無しさん
21/02/03 01:20:23.24 53EFMpkm.net
コンパイラがちゃんと32bit整数への丸め警告を出してくれるならいいが、しれっとコンパイルされたらお手上げ。
471:デフォルトの名無しさん
21/02/03 02:47:38.99 +m9V7fCu.net
>>462
丸めって暗黙の型変換のことですか?
シフト演算は特に関係しないと思いますが……
472:デフォルトの名無しさん
21/02/03 06:01:31.58 QcjMAifW.net
>>460
0x0000'ffffull
473:デフォルトの名無しさん
21/02/03 06:29:42.77 y3dS6mbz.net
unsigned long long x = (0x1ULL << 32) - 1ULL;
ならちゃんと動く(と思う)が
unsigned long long x = (0x1 << 32) - 1;
とかだとイマイチ不安が…
474:デフォルトの名無しさん
21/02/03 06:38:54.06 Nl+WsQpo.net
>>465
下の方はイコールの右辺にintしか出てこないのだから、intが32bitの環境なら32bitでしか計算されないだろう
475:デフォルトの名無しさん
21/02/03 10:23:38.02 q8Ed7guF.net
丸めと暗黙の型変換は違うものでは?
476:デフォルトの名無しさん
21/02/03 11:47:09.95 HtH84Poo.net
丸めや打ち切りは浮動小数点数の概念やね
477:デフォルトの名無しさん
21/02/03 13:02:19.58 53EFMpkm.net
ビットシフト記述は自然すぎてソースコードに埋もれてしまう。
64ビットマスクのAND記述は見た目がどぎついので、かえって人間の注意を引くことができる。
478:デフォルトの名無しさん
21/02/03 14:45:43.48 J722wycU.net
なにいってんだこいつ
479:デフォルトの名無しさん
21/02/03 15:50:32.48 pE1foWCw.net
>>465
やっぱり、32BITの時が一番プログラミングし易かったな。
64BITになると、64BITと32BITを区別して書く必要が出てきて、
書くのが面倒になった。
480:デフォルトの名無しさん
21/02/03 19:12:23.88 XaYGR0Wv.net
そう?ポインタサイズくらいしか違いなくない?
481:デフォルトの名無しさん
21/02/03 21:29:02.90 53EFMpkm.net
まじめにC/C++標準型size_tを使っている人には32bitと64bitの処理切り分けが地味に辛い。
482:デフォルトの名無しさん
21/02/03 22:36:28.54 y3dS6mbz.net
>>465の下の方のやつは符号拡張されたりする気がするorz
483:デフォルトの名無しさん
21/02/03 22:40:25.83 Ea4RwHR/.net
>>424
> obj& operator [] (int i) {return elem[i];}
> もちろんelem[]の定義はobj elem[];
objは行列クラスで、elemはobjのメンバで行列要素を格納する一次元配列、で合ってますよね?
class obj{
array<int, ?> elem;
public:
obj& operator [] (int i) {return elem[i];}
};
ということですか?
484:デフォルトの名無しさん
21/02/04 03:22:45.38 R0EDVzG0.net
>>473
size_t は、型名が長いし _ も含んでいるし、打つのが辛い。
それにコードに締める長さも長くなるので画面が狭くなるし。
485:デフォルトの名無しさん
21/02/04 04:17:06.60 SkZt7jTc.net
>>473
まじめに、て別にsize_t使ってたら偉いわけじゃない
サイズを表したいけどいちいち考えたくない場合の選択肢だぞ
486:デフォルトの名無しさん
21/02/04 11:32:06.33 sIhIIpMX.net
size_t型はSTLを使う人なら避けて通れない。
487:デフォルトの名無しさん
21/02/04 11:40:48.70 ZzRKCYY/.net
>>471
488: それ本来そこにあった問題に気付いていないだけだったと思うぞ
489:デフォルトの名無しさん
21/02/04 11:44:02.03 ZzRKCYY/.net
>>475
class obj{
array<obj, ?> elem;
public:
obj& operator [] (int i) {return elem[i];}
};
490:デフォルトの名無しさん
21/02/04 12:06:17.02 DWE1XJjK.net
>>480
それってarrayのarrayとかvectorのvectorとか配列の配列として行列を作るのと同じですよね?
一次元配列に要素を格納しておいて[][]でアクセスするのは不可能なんでしょうか
row majorやcolumn majorを自由にできる、等の理由でそちらの方が好ましいのですが
491:デフォルトの名無しさん
21/02/04 12:29:12.61 waKgX41w.net
一次元配列を内包しているクラスのoperator[](int y)が、下記のようなクラスを返すようにすればできる。
class Row {
vector<int>& 一次元配列への参照
int 列数
int y
int& operator[](int x){ return 一次元配列への参照[列数*y+x]; }
};
でも自分ならoperator[]は使わずもとのクラスにindex(x, y)みたいな関数を用意して対処すると思う。
492:デフォルトの名無しさん
21/02/04 13:10:42.29 g2cSm/y9.net
malloc とか new で確保したメモリ領域を使うように
vector ( または array ) をインスタンス化するにはどうすればよいですか?
493:はちみつ餃子
21/02/04 13:13:43.37 ttCVH4wp.net
>>481
こういう雰囲気で他のクラスをひとつ間に入れることでなんとかなる。
URLリンク(wandbox.org)
だけど俺も >>482 の言う通り operator[] にこだわらずに適当なメンバ関数でやる方法を推すわ。
実態として二引数なのだし、記法のためだけに余計な定義をするの馬鹿らしいと思う。
提案としては hoge[i, j] みたいな感じで二引数のインデックスを受け取れるようにする案は出てるんだが、
現状ではこのときのカンマは普通にカンマ演算子として解釈される。
前準備として、 C++20 からはブラケット内でのカンマは非推奨にするという変更が入っている。
URLリンク(timsong-cpp.github.io)
494:はちみつ餃子
21/02/04 13:20:29.03 ttCVH4wp.net
>>483
ある時点で確保済みのメモリの上にオブジェクトを構築するには
std::uninitialized_default_construct を使う。
でも std::vector 自体を適当なメモリの上に構築できても
std::vector 内で使うメモリは std::allocator で確保しようとするから、
必要ならアロケータを定義する必要がある。
495:デフォルトの名無しさん
21/02/04 15:40:11.75 R0EDVzG0.net
>>479
いや、全て32BITは、それに全て統一することで速度とメモリ効率と実用性の
バランスが取れていた。
ところが64BITだと実用上、表せる値の範囲はオーバースペックで
変数のメモリに占めるバイト数が8バイトと余りにも効率が悪い。
なので、多くの数値は32BITとし、必要な部分だけ64BITにするという
面倒な選択を強いられる様になった。
アドレスが64BITなので、それを整数型に入れるためには32BITの整数では
不足するので引きつられて整数も64BITを必要としがちになり、大混乱
が生じている。
(また、メモリーもアドレスを32BITより多くを必要とするアプリは非常に稀。)
496:デフォルトの名無しさん
21/02/04 16:48:02.49 DWE1XJjK.net
>>482
ありがとうございます
ストラウストラップの「プログラミング言語C++」に「行列クラスの設計」なるセクションがあったのを覚えてるので、そちらではどうしていたかも見てみます
497:デフォルトの名無しさん
21/02/04 17:07:22.68 dB2jWvbu.net
unique_ptr<Hoge[]> p(new Hoge[4]{a, b, c, d});
みたいな定義と同時に代入は出来るのですが
(各要素毎に Hoge(a), Hoge(b), Hoge(c), Hoge(d) になりました)
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4);
だと引数無しのデフォルトコンストラクタが無いといけないし
(そもそも引数無しのデフォルトコンストラクタ作りたくない)
unique_ptr<Hoge[]> p = make_unique<Hoge[]>({a, b, c, d});
とか
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4){a, b, c, d};
とかはコンパイル出来ませんでした
引数無しのデフォルトコンストラクタがあれば
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4);
p.reset(new Hoge[4]{a, b, c, d});
だとうまく逝きますが効率が悪い気がします
make_unique は使ってはいけないのでしょうか?
498:デフォルトの名無しさん
21/02/04 17:51:26.68 b9gCdorg.net
>>487
485も見てねー
499:デフォルトの名無しさん
21/02/04 17:52:07.72 b9gCdorg.net
まちがえた。484
500:デフォルトの名無しさん
21/02/04 20:56:33.92 ZyzsEROR.net
配列のunique_ptrは色々と中途半端で使いづらいからオススメしない
501:デフォルトの名無しさん
21/02/04 22:14:32.91 b9gCdorg.net
>>488
unique_ptr<Hoge[]> p;
p.reset(new Hoge[4]{a, b, c, d});
でよいのでは?
502:デフォルトの名無しさん
21/02/04 22:20:26.07 un3OWVjy.net
>>486
32bitアプリでも今どきなら64bit整数を使える処理系は多いだろ
そもそもアドレスを整数型に入れるっていつの時代の人よw
503:デフォルトの名無しさん
21/02/04 22:47:34.63 /RiZUiBF.net
>>493
アドレスを整数に入れるのは過去の話じゃないぞ
504:デフォルトの名無しさん
21/02/04 22:51:09.67 sIhIIpMX.net
intptr_t整数型を使ってたのっていつの時代?
505:デフォルトの名無しさん
21/02/04 23:24:48.23 hMfhfQWp.net
uintptr_tならいつもお世話になっております
506:デフォルトの名無しさん
21/02/05 00:01:41.63 NIkVqohR.net
この手合いのボケを量産するのはC++の害だな
507:デフォルトの名無しさん
21/02/05 01:35:15.82 EB7VAtvO.net
むしろCの害
508:デフォルトの名無しさん
21/02/05 01:52:47.05 xbM9VFWh.net
Rubyって結局勉強しないままPythonの時代になってしまったな
509:デフォルトの名無しさん
21/02/05 04:42:48.12 ZuGfyZDY.net
同様にC++を勉強しないままRustの時代になる
510:デフォルトの名無しさん
21/02/05 09:51:39.70 U76qOqQA.net
>>488
URLリンク(www.it-swarm.jp.net)演算子よりもstd-makeuniqueを使用する利点/826350881/amp/
URLリンク(ja.stackoverflow.com)の利点
511:デフォルトの名無しさん
21/02/05 13:28:24.98 ou/gU5gH.net
c++やらずにrustとか馬鹿量産するだけにしか思えんな。
512:デフォルトの名無しさん
21/02/05 14:10:32.07 Xzu/prlh.net
それ言ったらノーコードがどうたら言ってる奴らはもっとやばそう
513:デフォルトの名無しさん
21/02/05 14:17:08.86 M7C1cdPI.net
ノーコードていってノードツリーみたいなのでフロー管理するやつ
よくゲーム系ツールにありがちだけど、サンプルみたいな単純な処理ならともかく
こみいったフローになってくるとノード間の接続線がものすごいことになって
とても管理しようという気になれない、まさに見た目どおりのスパゲティプログラムに
514:デフォルトの名無しさん
21/02/05 14:18:44.73 ou/gU5gH.net
>>503
それはもう50年くらいずっとそうだろ。
ノーコードとか逆に俺様言語作ってるのとほぼ変わらん状態にしかならんという
しょーもない展開しか見たことない。
515:デフォルトの名無しさん
21/02/05 15:14:07.00 zImWQG8r.net
VCPKGのupdate、upgradeが常に失敗するんだけど、使えてる人いますか?
小まめにupdateしないからだろか?
516:デフォルトの名無しさん
21/02/05 15:14:37.91 zImWQG8r.net
Goは標準ライブラリが圧倒してる。
517:デフォルトの名無しさん
21/02/05 15:18:44.78 zImWQG8r.net
半年に一度フルビルドみたいになってしまう。
518:デフォルトの名無しさん
21/02/05 16:12:02.35 A9cGRDK5.net
Goは何がクソといってまず名前がクソ
519:デフォルトの名無しさん
21/02/05 16:36:26.85 zImWQG8r.net
C++は基本だから、義務教育で習得するべき。
520:デフォルトの名無しさん
21/02/05 16:50:43.11 /MNAnFTn.net
言語仕様がでかすぎるからC言語で精一杯
オマケで紹介される程度かな
521:デフォルトの名無しさん
21/02/05 18:21:14.28 7P5D6x+s.net
>>505
昔はアセンブラすら触れない奴がC言語とか笑わせるなとか真顔で言う人がいたんだぜ。
別に仕事ができるのならRustでもPythonでも何でもいいと思うぞ。
522:デフォルトの名無しさん
21/02/05 19:09:46.26 AjJLCZml.net
仕事ができるのならw
523:デフォルトの名無しさん
21/02/05 20:48:06.29 ou/gU5gH.net
>>512
仕事ができるならなw
できないカスがクソみたいなもん押し付けてくるから文句が出るんだよ。
rustでもpythonでもまともなコード書いてりゃ文句はないわ。
まともじゃないから文句が出る。
524:デフォルトの名無しさん
21/02/05 21:49:13.85 a81hUa+F.net
というか、プログラマとしてrust(鉄さび、腐食)になるというダブルミーニングを狙ったんだと思うけど。
525:デフォルトの名無しさん
21/02/05 21:59:53.11 kFtfKVND.net
お前らってド素人のくせになんでいっちょまえの口利くん?
それって不思議だわ
526:デフォルトの名無しさん
21/02/05 22:34:33.49 EB7VAtvO.net
Rustの名前は金属の錆じゃなくてサビ菌が由来
527:デフォルトの名無しさん
21/02/05 22:36:07.20 NIkVqohR.net
Rottenでいい
528:デフォルトの名無しさん
21/02/05 22:48:47.57 a81hUa+F.net
Perl6はRakuになってしまったし、Rustもいずれ「わびさび」の境地でSabiに改名されるでしょ。
529:デフォルトの名無しさん
21/02/06 03:04:22.39 kQVOjfvp.net
「まともなコードが書けるなら」じゃなくて、まともなコードを強制するのがRustという言語の方針だと思うが
530:デフォルトの名無しさん
21/02/06 04:45:05.79 oQfB5lBJ.net
>>284
昔からのプログラミング/電気界隈の慣習だから仕方ないけど、2要素のミニマルなブール代数しか扱わないにも関わらずboolean型を称するのがそもそもキモい
プログラミングで使うような半順序関係は、9割booleanで書くのが一番スッキリする
一般のbool型をプリミティブにして、そこからt/fやら三要素やらに派生するのが合理的に思う
531:デフォルトの名無しさん
21/02/06 04:50:47.70 GfZyzG1j.net
ブーリアン革命。
532:デフォルトの名無しさん
21/02/06 05:13:59.88 oQfB5lBJ.net
革命というか、クラスシステムでブール代数をエミュレートしてるのが現状のOOPじゃないかと
まあ言語によって可補性はマチマチだけど、全てについてスーパークラス/サブクラスなクラスを設けるのは、メインストリームの言語では大体そうだろ
533:デフォルトの名無しさん
21/02/06 07:27:56.30 S9Y30hRK.net
>>520
だとしたら胡散臭さ200%のカルトだな
534:デフォルトの名無しさん
21/02/06 09:31:12.13 rZdEmaWa.net
>>524
Java、Kotlin、Scala、C#、Ruby、Python、PHP
あたりのどれかを触ってみれば、危険な記述を言語仕様レベルで封印することのありがたさが分かる
他言語も触ってみることをオススメする
535:デフォルトの名無しさん
21/02/06 09:34:34.84 5Ze23T9D.net
よくわからんが安全カミソリみたいなものかね?
536:デフォルトの名無しさん
21/02/06 10:10:31.61 rZdEmaWa.net
>>526
そんな感じ
まぁ、C++もマスターすれば危険な記述を避けることはできるんだけど...
プログラマーが悪意を持ってプログラムを記述しない限り安全なコードになるようにしようという試みは大切だと思う
537:デフォルトの名無しさん
21/02/06 10:11:15.51 S9Y30hRK.net
>>525
ありがとう、おまえさんのレベルの低さがよくわかった
文法や動作がよくわかってなくてマシンに警告してもらわなきゃ自分では判断できないんだな
アプリの内容
538:として良からぬ事を企むという次元には程遠いわけか
539:デフォルトの名無しさん
21/02/06 10:12:54.42 rZdEmaWa.net
>>528
投稿した瞬間の不意打ちレスワロス
540:デフォルトの名無しさん
21/02/06 10:17:55.71 u/OM7jGY.net
>>527
> プログラマーが悪vログラマーが悪意を持ってプログラムを記述しない限り安全なコードになるようにしようという試みは大切だと思う
>>528
> 文法や動作がよくわかってなくてマシンに警告してもらわなきゃ自分では判断できないんだな
この流れは大草原不可避
541:デフォルトの名無しさん
21/02/06 11:01:19.43 PohEB++t.net
>>504
Unity とか UE はきらい?
542:デフォルトの名無しさん
21/02/06 11:07:09.44 PohEB++t.net
>>509
めっちゃわかります
URLリンク(blog.golang.org)
URLリンク(write.kogus.org)
543:デフォルトの名無しさん
21/02/06 11:09:03.81 gLiOOG5V.net
rustの縛りプレイはマルチスレッドでのメモリ管理のクソ面倒さが原因だろう
544:デフォルトの名無しさん
21/02/06 12:19:39.89 S9Y30hRK.net
>>527
いーや、くだらねえ
プログラマを信頼しない方針はあれもダメこれもダメの制限だらけになるだけだ
おまえさん自身も実社会で職場の誰よりも制限だらけなんだろう
重責を担ったことのないやつは人のせいにすることしか考えねえ
545:デフォルトの名無しさん
21/02/06 12:25:16.36 UXUwo66G.net
それだけ無責任で信頼出来ない人間が多いって事だろ
546:デフォルトの名無しさん
21/02/06 12:31:39.86 58EQLFGq.net
信頼はタダではないからな
バグを流出させたら銃殺ぐらいが妥当
547:デフォルトの名無しさん
21/02/06 12:53:16.04 DutNpJ49.net
>>528
お前のレベルが極めて高いのは分かったが、お前の共同の開発者もお前のようにハイレベルだとは限らない
548:デフォルトの名無しさん
21/02/06 13:19:02.89 Hu1Z4B3S.net
>>534
負け犬の遠吠え
549:デフォルトの名無しさん
21/02/06 13:29:55.66 EjDQT0l8.net
>>460
「(type)~0」でどう?
550:デフォルトの名無しさん
21/02/06 13:32:30.22 TGsCRbLO.net
>>536
ハゲを流出させたら~と空目した
551:デフォルトの名無しさん
21/02/06 13:33:33.54 rZdEmaWa.net
>>538
しー!余計なことを言うんじゃないっ!
552:デフォルトの名無しさん
21/02/06 13:38:49.17 Hu1Z4B3S.net
>>528はスマートポインタを知らなさそう
文章から溢れ出る無能感
553:デフォルトの名無しさん
21/02/06 13:44:48.20 S9Y30hRK.net
構ってちゃんは、スマポ憶えたてらしいなw
554:デフォルトの名無しさん
21/02/06 13:46:38.15 gYQHLnIz.net
天才の俺が書くプログラムは絶対正しいから無駄なバカよけ機能はいらないしテストのような下等なことはしない
って豪語してたいつぞやの天才くんが帰ってきたのかな
555:
21/02/06 13:50:19.96 kbrcRlAn.net
>>544
私は馬鹿なので天才のコードというのがどんなのか凄く興味があります…
556:デフォルトの名無しさん
21/02/06 13:53:43.56 ROiZJzWf.net
コテハンでこの程度の文章も読めないのは
557:
21/02/06 13:55:54.96 kbrcRlAn.net
>>546
そりゃ馬鹿だからでしょう…
558:デフォルトの名無しさん
21/02/06 13:59:04.79 aJ9IYVGP.net
どう考えても誰かさんに対する皮肉なんだよなぁ...
まぁ、荒れるから誰とは言わないけど
559:デフォルトの名無しさん
21/02/06 14:05:03.59 fN0CSTPN.net
傲慢かましすぎもへりくだりすぎも良くない
560:デフォルトの名無しさん
21/02/06 14:06:38.65 zTEH7215.net
>>548
すでに荒れる種をまいてるきみが一番有害
561:デフォルトの名無しさん
21/02/06 14:12:51.02 aJ9IYVGP.net
>>550
いや、俺は別にS9Y30hRKは天才だと思ってるぞ!誰もS9Y30hRKの事をゲロカス老害だとか、バグを減らす上での有害な存在だとか、人を見下すだけの無能だとか、自分にとって都合のいい妄想を口に出す病人だとか、構ってちゃんだとか、そんなこと全�
562:R思っていないから!!S9Y30hRKは天才!!疑う余地もなく天才!!ハイレベルなバカで誰もついていけないとか、そんなこと思っていないから!!! だから!それ以上この話はやめろぉおおおお!!!
563:デフォルトの名無しさん
21/02/06 14:21:36.41 rZdEmaWa.net
>>545
馬鹿でも扱えるくらい綺麗なコードが天才のコードだと思う
C++は表現豊かな言語だから...他の言語も触ると、綺麗な記述方法を学ぶ良い機会になるよ
564:デフォルトの名無しさん
21/02/06 14:56:25.58 58EQLFGq.net
>>552が扱えるかどうかが天才か否かの基準か!
565:デフォルトの名無しさん
21/02/06 15:01:56.11 S9Y30hRK.net
綺麗かどうかじゃない
何を実現したのかだ
綺麗に書くのはエチケットだが一番大事なことではない
566:デフォルトの名無しさん
21/02/06 15:11:21.64 f5ipo2xA.net
>>553
銃殺は銃刀法違反及び殺人罪に接触することすら理解できないお前でも分かるコードが存在したら私はそのコードを書いた天才を尊敬する
567:デフォルトの名無しさん
21/02/06 15:21:29.14 58EQLFGq.net
行政が法律に基づき行うなら問題無い
人が作った法律なら人が改正することができる
568:デフォルトの名無しさん
21/02/06 15:22:17.24 S9Y30hRK.net
スレ違い板違い失せろ
569:デフォルトの名無しさん
21/02/06 15:28:25.66 58EQLFGq.net
>>557は
>>555に対するレス
570:デフォルトの名無しさん
21/02/06 15:30:29.13 f5ipo2xA.net
自作自演?
571:デフォルトの名無しさん
21/02/06 16:36:26.06 oR/8CbQ7.net
やらかしちゃいましたねー
人を見下しておきながら、人を見下す側もウッカリミスはするという事が証明されました
こういうウッカリ屋はプログラミングでも不具合を引き起こします
馬鹿でも天才でもウッカリ屋でも保守できるコードは記述するように心がけましょう
572:デフォルトの名無しさん
21/02/06 16:38:50.88 oR/8CbQ7.net
>>560
他にもテストの自動化、バージョン管理ツールの導入等もして不具合が流出しない仕組みを揃えておきましょう
以上
573:デフォルトの名無しさん
21/02/06 16:54:20.22 bwIKlxQ8.net
std::stringにUTF-8のコードを入れてプログラムを書いていますが、これを正しく編集する
にはUTF-8での文字の境界を正しく認識しないと駄目ですよね?
それは一般的にはどう処理するものなのでしょうか。
UTF-8のビットパターンとバイト数のことは知っていますが、それを自分で処理すべきか、
さらには絵文字とか複数のユニコードが組み合わさったものはどうするのか、とか。
574:はちみつ餃子
21/02/06 17:05:10.96 N9CbrPsc.net
>>562
コードポイント単位での処理で良いのであれば自分で適当に書いてしまってもいいと思う。
高度なものになると ICU などのライブラリを使う。
書記素クラスタ単位での処理が必要だったり正規化だったりといった場合では
コードを書けば済むというものでもなくて巨大な表が必要だし歴史的な変な規則が盛りだくさんだから
よほどの根性がないと自分ではどうにもならないと思う。
575:蟻人間
21/02/06 17:07:58.83 gG6zzvvp.net
>>562 Windowsだったら
#include <windows.h>
MultiByteToWideChar(CP_UTF8, 0, ...);
MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, ...);
WideCharToMultiByte(CP_UTF8, 0, ...);
IsTextUnicode(...);
などが使えると思われます。
576:デフォルトの名無しさん
21/02/06 17:41:00.54 GfZyzG1j.net
スカラー値が一文字を表現するとは限りませんが、ユニコードスカラー値を基本にするのが現実的な妥協点だと思います。
きちんと処理するのは、データベースとアルゴリズムが必要なので、少人数では無理です。
ICUが有力な選択肢となりますが、これも気難しいライブラリなので、用途に合わないかもしれません。
事実上、世界中の様々な民族の文字を統一的に扱う目論見は破綻していると思います。
577:デフォルトの名無しさん
21/02/06 17:44:16.27 +KPQZs33.net
URLリンク(youtu.be)
578:蟻人間
21/02/06 17:50:18.63 gG6zzvvp.net
URLリンク(ja.wikipedia.org)
>任意のバイトの先頭ビットが "0" なら1バイト文字、"10" なら2バイト以上の文字の2番目以降のバイト、...(中略)...であると判定できる。
579:蟻人間
21/02/06 17:55:50.63 gG6zzvvp.net
つまり、
uint8_t utf8_byte = ...;
if (!(utf8_byte & 0x80)) {
// 1バイト文字。
} else if ((utf8_byte & 0xC0) == 0xC0) {
// マルチバイト文字の先頭バイト。
} else {
// マルチバイト文字の非先頭バイト。
}
580:デフォルトの名無しさん
21/02/06 18:11:29.66 6eQmSTNr.net
プログラミングのお題スレ Part18
スレリンク(tech板:453番)
UTF-8 は、先頭ニブル・4ビットで、1~4バイト文字を判別しています
こういう規則か?
581:デフォルトの名無しさん
21/02/06 19:16:40.60 S9Y30hRK.net
>>561
殺虫剤のパラドックスって知ってる?
582:デフォルトの名無しさん
21/02/06 20:33:00.74 zn5WrP4C.net
>>570
恥の上塗り?w
ただし、自動化されたリグレッションテストの場合は、同じテストを繰り返すことでリグレッションが低減しているという有益な結果を示すことができる。
URLリンク(note.com)
583:デフォルトの名無しさん
21/02/06 21:07:07.97 GfZyzG1j.net
テストロボットだぞ、ガシャーン!ガシャーン!
584:デフォルトの名無しさん
21/02/06 21:08:55.93 GfZyzG1j.net
片山さんの自動パズルとか、ウェブだったら☆1万くらいついてそうだけど。
なんでWindowsにこだわるんだろ。
585:蟻人間
21/02/06 22:54:31.87 gG6zzvvp.net
>>573 JavaScriptで動くものはすでにある。
URLリンク(katahiromz.github.io)
あるが、ビジネスとして展開する能力がない。
586:デフォルトの名無しさん
21/02/06 23:50:48.27 58EQLFGq.net
クレブナー基底で解くやつ!
587:デフォルトの名無しさん
21/02/07 06:07:42.85 HYoiJUgB.net
>>571
質問に答えてねw
588:デフォルトの名無しさん
21/02/07 06:47:27.09 jX/y7Db/.net
>>576
ん?
どの質問?
>>570ならリンク先読めばいいだけだろ
恥ずかしくて読めないのかもしれないけどw
589:デフォルトの名無しさん
21/02/07 08:26:36.56 HYoiJUgB.net
>>576
俺の質問にアンカーつけといてどの質問はねえだろ
恥ずかしくてとぼけてんのおまえさんだろ
590:デフォルトの名無しさん
21/02/07 08:29:49.52 p49/UnNX.net
テストはやらないよりもやったほうがはるかに良い
前の版通ったテストが最新版でも通るという品質は担保される
殺虫剤のパラドックスよりも恐れなければならないのは
いっぱい作ったテストコードが事実上同じテストでしかないという事態になることの方
※ 個人の感想です
591:デフォルトの名無しさん
21/02/07 08:49:47.79 m5BD34IK.net
>>578
別に完璧になくせるなんて誰も言っていないのに勝手にツッコんでるの何?としか思ってないよ
592:デフォルトの名無しさん
21/02/07 08:57:32.70 HYoiJUgB.net
>>580
おまえさん、こう言ったんだぜ
> 不具合が流出しない仕組みを揃えておきましょう
流出しなくなんかならねえ
不具合はポカミスばかりとは限らない
おまえさんのような浅はかな思想で突っ走った先に
碌でもない結末が待っていることだってある
揃えられるものなら揃えてみな
自分ができねえことを他人に言うな
593:デフォルトの名無しさん
21/02/07 09:11:28.01 p49/UnNX.net
人は思い込みを反証することで生
594:きていける だが完璧に反証できないこともある ユニットテストはそのかけがえのないものを教えてくれた
595:デフォルトの名無しさん
21/02/07 09:41:41.73 m5BD34IK.net
>>581
え?それ俺じゃないけど
テストやればバグが無いといえるわけじゃないから安心するなってだけで、テストするなって話じゃないよね
主旨は同じだよね
何が気に入らないの?
596:デフォルトの名無しさん
21/02/07 10:00:05.54 HYoiJUgB.net
ああ、俺じゃないで逃げるのか
情けねえやつだな
597:デフォルトの名無しさん
21/02/07 10:07:20.85 jX/y7Db/.net
>>578
アンカーつけてると言うなら
> >>570ならリンク先読めばいいだけだろ
って書いてあるだろ
よほどアホでもない限りそんなアホなこと言うわけ無いと思ったからどれ?
って聞いたんだけど、想像以上のアホだったってことかな?w
598:デフォルトの名無しさん
21/02/07 10:10:29.25 jX/y7Db/.net
>>581
不具合はなくせないから仕組みも努力もいらんと言うならそれでいいんじゃね?
お・ま・え・ん・と・ろ・こ・で・は w
599:デフォルトの名無しさん
21/02/07 10:13:42.72 2AGAGJ05.net
マスクも手洗いもコロナを100%防げるわけじゃないから
マスク付ける必要も手を洗う必要もないね
600:デフォルトの名無しさん
21/02/07 10:20:21.65 HYoiJUgB.net
テストツールいらねえなんて言ってねえぜ
テストツール万能論はアホの考えだと言っている
601:デフォルトの名無しさん
21/02/07 10:21:25.49 HYoiJUgB.net
で、身に覚えのあるやつが返事してるから
ニヤニヤ笑ってるのさ
602:デフォルトの名無しさん
21/02/07 10:48:37.66 2AGAGJ05.net
「テストツール万能論」を主張したレスなんて一つも見えないんだけど
存在しないものを見てニヤニヤしてる変態こわい
603:デフォルトの名無しさん
21/02/07 10:56:59.83 HYoiJUgB.net
それを>>587がぬかすとは笑止な
604:デフォルトの名無しさん
21/02/07 11:11:45.24 0QEz1MW7.net
構い過ぎじゃね?
605:デフォルトの名無しさん
21/02/07 11:52:54.07 jX/y7Db/.net
>>591
まさかと思うけど>>587がマジで言ってるとか思ってないよね?w
606:デフォルトの名無しさん
21/02/07 12:03:05.54 2AGAGJ05.net
ああ・・・そういうことね・・・すまん触るべきじゃなかった
607:デフォルトの名無しさん
21/02/07 13:47:28.22 p49/UnNX.net
すまんで済んだらユニットテストは要らんわ!
608:デフォルトの名無しさん
21/02/07 14:09:34.56 qbLU6RFF.net
野菜食えで馬鹿みたいにブチギレるホリエと一緒やな
609:デフォルトの名無しさん
21/02/07 15:05:54.73 HYoiJUgB.net
>>593
奴は「必要ないね」とぬかしたんだ
別に武漢熱に話をすり替えようとすり替えまいとそこは関係ない
610:デフォルトの名無しさん
21/02/07 15:41:29.20 yi1XmM9H.net
>>597
文章を字面通りにしか解釈できない人?
611:デフォルトの名無しさん
21/02/07 16:31:48.90 jcLu/xd9.net
vectorを参照渡しするときの方法について教えてくください
class sansyo
{
private:
std::vector<short> _stdSansyo;
public:
void setSansyo(std::vector<short>& sansyo);
}
;void sansyo::setSansyo(std::vector<short>& sansyo)
{
_stdSansyo = sansyo;
_stdSansyo[5] = 500;
}
int main()
{
std::vector<short> moto;
sansyo cSansyo;
for (int i = 0; i < 10; i++) {
short tmp = i * 2;
moto.push_back(tmp);
}
cSansyo.setSansyo(moto);//ここで参照渡しのはず
for (int i = 0; i < 10; i++) {
std::cout << "値=" << moto[i] << "\n"; //値が変わっていない
}
}
こんなふうに、参照渡しにしてみたのですがどうも参照渡しになっていないでそのまま新しいvectorが作られちゃったぽいのですが
これだとメモリを倍使っちゃってるし、時間も掛かってますよね
どういうふうにしたら、喚ばれた側の関数で参照渡しに出来るのでしょう
612:蟻人間
21/02/07 16:37:08.22 sfdJNFTq.net
>>599
右辺値参照かstd::swap
613:デフォルトの名無しさん
21/02/07 17:13:26.18 8CWTHaUD.net
>>600
サンプル貼ってよ
614:デフォルトの名無しさん
21/02/07 17:21:04.63 jcLu/xd9.net
std::swapも右辺値参照も全然上手く行きそうになかっのたで
宣言をポインタにして
private:
std::vector<short> *_stdSansyo;
void sansyo::setSansyo(std::vector<short>& sansyo)
{
_stdSansyo = &sansyo;
sansyo[6] = 100;
_stdSansyo->data()[5] = 50;
}
関数をこんなふうに書き換えたら、ちゃんと参照だけで動いたのでもういいや
けど右辺値参照とstd::swapの例も出してくれたらこれから色々いたスカリマス
615:デフォルトの名無しさん
21/02/07 17:24:59.07 8CWTHaUD.net
>>600
ほれほれ
貼れんのか
616:デフォルトの名無しさん
21/02/07 17:28:56.01 yi1XmM9H.net
>>599
参照渡し自体はできてるはず。
ただ参照渡ししたvectorをクラスのメンバに代入して、代入されたクラスメンバの方を更新しているからvectorを渡した元の方にはまったく影響が無いというだけ。
617:デフォルトの名無しさん
21/02/07 17:29:10.92 jX/y7Db/.net
>>598
もうそう言うことにしないと自我が保てないんだろw
618:デフォルトの名無しさん
21/02/07 17:59:39.88 p49/UnNX.net
sansyo::_stdSanshoをどうしても参照にしたいならこうするしか、
class sansho {
private:
std::vector<short> _stdSansyo;
public:
sansho(std::vector<short>& src) : _stdSansyo(src) { }
void setSansyo(std::vector<short>& sansyo);
};
void sansyo::setSansyo(std::vector<short>& sansyo) {
_stdSansyo[5] = 500;
}
int main() {
std::vector<short> moto;
sansyo cSansyo(moto); //ここで参照渡し
for (int i = 0; i < 10; i++) {
short tmp = i * 2;
moto.push_back(tmp);
}
cSansyo.setSansyo(moto); // moto[5]に500が入りまくり
for (int i = 0; i < 10; i++) {
std::cout << "値=" << moto[i] << "\n"; //値が変わった!(予定
}
};
619:デフォルトの名無しさん
21/02/07 18:00:52.99 HYoiJUgB.net
>>598
だったら何だとぬかす気だ?
> 存在しないものを見てニヤニヤしてる変態こわい
> 文章を字面通りにしか解釈できない人?
要するに話になんない奴ってことだろ
言ったことにも裏の意味にもコメントされたくない
じゃあ相手しねえでやるから黙ってろゴミ
620:デフォルトの名無しさん
21/02/07 18:02:35.24 p49/UnNX.net
訂正orz
誤: private: std::vector<short> _stdSansyo;
正: private: std::vector<short>& _stdSansyo;
もしcSansyo.setSansyo(moto)の呼び出し時に参照を渡したいんじゃああ!
という向きにはsansyo::_stdSansyoはstd::vector<short>* _stdSanshoにして
ポインタを持つようにすべき
621:デフォルトの名無しさん
21/02/07 18:10:05.07 p49/UnNX.net
ちゅかもっと大きな一般原則としてつぎのどっちかにすべき
(1) std::vector<short>の実体の所有権をmain()(で定義いているmoto)に固定してcSanshoクラスにmotoのアドレスを記憶させない
(2) std::vector<short>の実体の所有権をcSanshoクラスのインスタンス(_stdSansyo;)に固定してmain()でmotoを定義するのをやめる
※ 個人の感想です
つまり出題が悪い。出し直し
622:はちみつ餃子
21/02/07 18:10:05.98 hHDgzHUe.net
>>602
元の考え方を変えずに動作させるにはその方法は十分に妥当だと思うよ。
ただ、もっと複雑なプログラムになったときにうっかりデータよりポインタのほうが
長生きすることになっても発見しづらいデザインになっている。
可能なら全体のデザインを見直すべきという話で、
いっそ所有権を渡してしまったほうが間違いにくいかもねという意味で右辺値参照や swap の話題が出ているので、
>>599 をベースにして右辺値参照や swap を使う例に書き換えるのは難しい。
別物になってしまう。
623:デフォルトの名無しさん
21/02/07 18:11:12.01 yi1XmM9H.net
>>607
自分以外の複数の人を同一人物だと思っちゃう人?
624:デフォルトの名無しさん
21/02/07 18:14:03.86 p49/UnNX.net
>>611
ネットの総意とか言い出しちゃう人?
625:デフォルトの名無しさん
21/02/07 18:16:20.19 p49/UnNX.net
検証不能な事物を錦の御旗にするような人間が
ソフトウェアのテスト推しなのは
大いなる矛盾である氏ね
626:デフォルトの名無しさん
21/02/07 18:18:25.00 HYoiJUgB.net
>>611
あの流れで
> 文章を字面通りにしか解釈できない人?
なんてぬかすやつは複数ID自演厨と見なされて当然だ
疑われたくなければ口の利き方に気をつけな
疑いは晴れてない
この後の発言にも気をつけるんだな
627:デフォルトの名無しさん
21/02/07 18:24:44.17 4v/nAOdw.net
>>566
なにこれ
628:デフォルトの名無しさん
21/02/07 18:29:05.24 U/6f7Qk0.net
参照をフィールドに保持するのは、一部のパーサーくらいでは?
しかも、状態を関数に切り分けないとデバッグが辛いので、仕方なくそうするだけで、バッド何とかの類だし。
629:デフォルトの名無しさん
21/02/07 18:31:34.10 U/6f7Qk0.net
むかし5chで誰かが、プログラムを書くときは必ずテストしてるはずなんだって言ってましたが。
それを単体テストとして書いておけばずっと使えて便利だよと。
その書き込みを見て世界中の人がテストフレームワークを書き始めたんですよ。
630:デフォルトの名無しさん
21/02/07 19:06:50.71 n+epGkV9.net
>>616
想像力が足りなすぎ
>>617
想像力が豊かすぎ
631:デフォルトの名無しさん
21/02/07 20:53:42.20 U/6f7Qk0.net
バッドエンディングですね。
632:デフォルトの名無しさん
21/02/07 21:03:56.50 ZOvCZ0cx.net
グローバル変数使うなとは言わないけどコメントもないのはキツい
grep掛けて検索しても訳分からん
ポインタで飛び火してるときなんてもう…
633:デフォルトの名無しさん
21/02/07 22:09:55.11 IiZq+u+t.net
演算子オーバーロードの厄介さはキーワード検索で拾いにくいこと。
反復子もそうだが。ま、言い出したらきりないが。
634:仮トリップ
21/02/07 22:57:26.65 HI2f2oIL.net
>>561を書いたのは私なんだけどなぁ...
面倒くさそうな人がいるし、一般論だけ言って立ち去ろって思っただけ
635:仮トリップ
21/02/07 23:02:22.83 HI2f2oIL.net
ちなみに、>>561以降は何も述べてない。
私は一般論を語っただけだから、他の人が私と似た考えでツッコミを入れただけに過ぎない。
殺虫剤のパラドックス?それがどうした?
私はテストコードを書いて不具合を激的に抑えているが?
殺虫剤のパラドックスを説明したところで、不具合を限りなくゼロに近づける試みが無駄であることの証明にはならない。
636:蟻人間
21/02/07 23:09:32.25 sfdJNFTq.net
>>622-623
自我の芽生え、おめでとう!
では、かえるの歌を歌います。
【...JASRAC権利関係の為、自主検閲...】
♪パパーン
(全員でクラッカーを鳴らす)
637:デフォルトの名無しさん
21/02/07 23:20:12.91 IiZq+u+t.net
殺虫剤のパラドックスなんてものは存在しない。
ただの退行テスト不足だ。
638:デフォルトの名無しさん
21/02/08 06:24:22.18 PnrMZIJR.net
殺虫剤のパラドックスって言いたかっただけやろw
そもそもテストで発覚したバグを修正したら同じテストで摘出できないのは当たり前
摘出できたら単なる修正漏れだしw
JSTQBの関係者か信奉者が言い出したんだろうけどあまり意味のない用語だと思う
639:デフォルトの名無しさん
21/02/08 06:42:41.05 HwnOmmQF.net
蒸し返さなくていいから……
640:デフォルトの名無しさん
21/02/08 07:03:25.17 nKLqWVxG.net
虫返さないですと!?
641:デフォルトの名無しさん
21/02/08 11:05:43.31 NGjwD54G.net
>>610
そもそも>>600は的外れだと思うんだが
メンバの方を参照かポインタで持つ、で終わりだろ
3行目以降完全に蛇足
642:デフォルトの名無しさん
21/02/08 11:20:50.36 VJ9lplXi.net
>>627,628
そういうのは無視しろ
643:デフォルトの名無しさん
21/02/08 12:00:56.57 zDqHH6LK.net
スルーの法則
644:デフォルトの名無しさん
21/02/08 12:43:41.70 DuebuhTc.net
>>602
>>599
誰か
永続的に使用するなら shared_ptr
645:で受け取れ。今のままだとsetSansyoを呼び出す側が所有権手放していいのかわからなくて困るだろ。 て指摘した? 今や生ポインタなんて性能優先のときに内部的に使用するもんで、インターフェイスで使用するもんじゃない。 あと、参照も関数内だけで使用する引数に使うもんで、永続的に所有する引数に使うもんじゃない。
646:デフォルトの名無しさん
21/02/08 14:04:18.90 VJ9lplXi.net
コンストラクタでなら参照型のメンバ変数に保存できる。ほとんどの人はやらないけど。
647:デフォルトの名無しさん
21/02/08 18:54:29.18 DuebuhTc.net
>>633
できるのと実際に実装するのは別の話だわな。
所有権の無いオブジェクトの参照を保存するなんて狂気の沙汰だ。
648:デフォルトの名無しさん
21/02/08 19:12:34.60 nKLqWVxG.net
アイキャンユーキャン。
649:デフォルトの名無しさん
21/02/08 20:51:28.21 U8Md53kE.net
>>633
クラス間に親子関係のようなものがあって、子の生存期間が常に親の生存期間内にあるような場合は、親への参照をメンバ変数とすることは普通にあると思うけど。例えば>>484とか
650:デフォルトの名無しさん
21/02/08 21:15:43.14 NGjwD54G.net
shared_ptr(またはスマポ)至上主義の変なやつ以前から居るんだよな
相手にするな
651:デフォルトの名無しさん
21/02/08 21:37:27.20 UsSsiWeS.net
ナマポ使ったほうが良い場面なんて皆無でしょう
652:デフォルトの名無しさん
21/02/08 21:48:31.75 2GJiXyxS.net
出たwナマポ完全否定奴w
653:デフォルトの名無しさん
21/02/08 21:58:57.06 VJ9lplXi.net
参照型のメンバ変数は参照オブジェクトの生存期間を保証できないからweak_ptrで保存しておいて使う時だけshared_ptrを取得するのがC++的な解決なんじゃないの。
654:デフォルトの名無しさん
21/02/08 22:08:09.48 FKp3giDs.net
スマポにしたら所有権の問題を考えなくてよい
というわけではないからスマポ使えというのは妥当ではない
逆に所有権に矛盾が無ければインスタンスは生成元が与えた参照を持って良い
ていうかスコープを抜けたら自動的に解放される系のクラスを書いたら
エラー処理上エラー通知先としての生成元オブジェクトの参照保持はほとんど不可避
655:デフォルトの名無しさん
21/02/08 22:11:14.29 NgGwlfwa.net
コピー禁止のshared_ptr欲しい
656:デフォルトの名無しさん
21/02/08 22:25:23.27 bp+4mh0R.net
すべてスマポで書くスタイルも悪くないと思うけど、メイヤーズ神もツリー構造で子が親のポインタを持つときはナマポで十分と書いている
657:デフォルトの名無しさん
21/02/08 22:27:43.60 34Jom8HU.net
木のノードは子へのポインタじゃなくて子のノードIDを持て😡
658:デフォルトの名無しさん
21/02/08 22:48:15.38 NgGwlfwa.net
自分よりポインタの方が寿命が長いことが保証されているなら確かに生ポで問題ないが
それが成り立つ状況ってなかなかないよな。
659:デフォルトの名無しさん
21/02/08 23:02:19.81 VJ9lplXi.net
参照先の実体がまだ生存しているかどうか知るにはweak_ptr::expired()を使うしかないのが現状でしょ。
660:デフォルトの名無しさん
21/02/08 23:07:56.19 nKLqWVxG.net
Chromiumはstd::unique_ptrを全面的に使ってるけど、ポインタを使う設計そのものが古いような気がする。
661:デフォルトの名無しさん
21/02/08 23:13:28.50 BwguerZK.net
まあcコードを全く使わないってのならいいんでないの。
ただc++のポータビリティーは君が思ってるより低いけどね。
662:デフォルトの名無しさん
21/02/08 23:23:15.47 cR8ppl+C.net
露骨すぎるマウント取りたがりダッセーwww
663:デフォルトの名無しさん
21/02/09 01:58:29.04 qUmf+U4D.net
マウントじゃなくてポインタでは?
664:デフォルトの名無しさん
21/02/09 02:46:23.52 jPnyP+Vp.net
C++に特化したAPIなんてどこのOSでも提供されないから、結局、Cの配列と互換性のあるstd::vectorやstd::arrayを使わざるを得なくなる。
665:デフォルトの名無しさん
21/02/09 04:01:45.22 qUmf+U4D.net
>>644
木もコンテナで良いですよね。
所有権がハッキリしてて。
666:デフォルトの名無しさん
21/02/09 07:34:27.86 nSJhwzEU.net
>>651
data()を必ず使う手合いか?
667:デフォルトの名無しさん
21/02/09 07:39:10.06 s3p3GZ7R.net
木は木全体を収める領域ごと一気に解放する場合もあるから別に
668:デフォルトの名無しさん
21/02/09 17:49:12.66 KrtnTLUi.net
>Cの配列と互換性のある
doubt
669:デフォルトの名無しさん
21/02/09 17:53:30.91 LEWRJrN2.net
ダウトとデビューって似てるよね
670:デフォルトの名無しさん
21/02/09 18:35:55.16 qUmf+U4D.net
親が子のポインタを所有する木は、親を消すとネストして子孫のデストラクタを呼ぶので、スタックが枯渇します。
したがって、子から順番に消さなくてはなりません。
671:デフォルトの名無しさん
21/02/09 18:56:53.48 qUmf+U4D.net
その様はまるで摩天楼がドミノ倒しのように連鎖倒壊するようでもあり、DOMINOというピザにもなっています・
672:デフォルトの名無しさん
21/02/09 19:07:16.84 IPYpL0sA.net
なんと後味の悪い話
673:デフォルトの名無しさん
21/02/09 20:39:36.84 zHOwdh/n.net
意味が分からない
674:デフォルトの名無しさん
21/02/09 21:07:48.14 Rh87rJZX.net
>>657
それで枯渇するようじゃ木の探索すらできない。
675:デフォルトの名無しさん
21/02/09 21:13:02.23 5Ac7csWH.net
探索はループでもできるんで、たとえば数万個の要素を持つツリーを子から消せというのは真理なのかも
676:デフォルトの名無しさん
21/02/09 21:27:40.55 AojZLEiV.net
消すのは独立して実行できるので別スレッドに送れば実質コスト0
677:デフォルトの名無しさん
21/02/09 21:38:09.75 s3p3GZ7R.net
>>662
DFAとPDAではやれることの範囲の違いがちげう
つかこの場合は安易にスマポとかコンテナを使うから破棄ごときにトラバースの手間がかかるんである
678:デフォルトの名無しさん
21/02/09 21:44:42.72 5Ac7csWH.net
それもそうであるな
679:デフォルトの名無しさん
21/02/09 21:50:17.60 s3p3GZ7R.net
ちゅか垂直探索なら木をメモリに持っておく必要が無い
水平探索ならメモリ上に世代1、世代2、....と木を育てていく(らしい)が
兄弟ノードを全部見終えたのでいざ従妹ノードに移ろうとするときに
親ノードへの参照は欲しい木がするがするとshared_ptrなら即循環参照になり、
子の情報で親(子孫がいっぱいぶら下がっている)を生成できるわけもないから、
ウィークポインタの出番でもない
680:デフォルトの名無しさん
21/02/10 01:37:49.58 XIZePh+h.net
子から消さなかったばかりに。
2000人を乗せた航空機が洋上で消えた。
ってなるかも?
681:デフォルトの名無しさん
21/02/10 01:48:13.89 ZYaksnCf.net
A380でさえ853席だが2000人なんてどうやって載せるんだろう
682:デフォルトの名無しさん
21/02/10 01:51:41.17 2ozOIzIF.net
く、空中で衝突するとか…
683:デフォルトの名無しさん
21/02/10 01:53:08.99 XIZePh+h.net
インドでは屋根の上にも乗ります。
684:デフォルトの名無しさん
21/02/10 01:55:11.55 XIZePh+h.net
URLリンク(trafficnews.jp)
証拠写真みつけてきた。
685:デフォルトの名無しさん
21/02/10 01:55:17.84 uF0JvJPV.net
GTA5のMOD作成者みたいな会話だな
686:デフォルトの名無しさん
21/02/10 02:01:19.54 uF0JvJPV.net
>>653
昔はdata()がなかった。(遠い目)
687:デフォルトの名無しさん
21/02/10 06:40:17.61 ZYaksnCf.net
アントノフの貨物室にすし詰めでどんくらい乗れるかな
688:デフォルトの名無しさん
21/02/10 06:40:27.16 XIZePh+h.net
東京: TK
京都: KT
大阪: OSK
淡路: AWG
689:デフォルトの名無しさん
21/02/10 07:59:22.76 FGGGEnfF.net
航空機や原発みたいなクリティカルなシステムでは
全部固定長の配列で書いてあるんじゃないの
690:デフォルトの名無しさん
21/02/10 08:06:21.27 uF0JvJPV.net
釣れますか。
ヒープのほうが少し安全です。
691:デフォルトの名無しさん
21/02/10 10:25:11.13 4XPmMtZj.net
>>671
どこが証拠やねん!
せいぜり100人やないかヽ(`Д´)ノ
692:デフォルトの名無しさん
21/02/10 14:32:04.65 TFzLuCg0.net
すみません、std::for_each を使っていて continue したくなりましたが、サポートしてないです
よね? これって:
1. for_each は continue する必要がないような処理に限ってに使うべき。
2. ループの中で大きい if ブロックを作って空の処理にすればよい。
3. その他
693:デフォルトの名無しさん
21/02/10 15:13:45.18 ZYaksnCf.net
returnすれば?
for_each(begin(foo), end(foo), []{ if(bar) return; });
694:デフォルトの名無しさん
21/02/10 16:06:00.49 HSfvjOUE.net
return は continue ではなく break じゃないの?
質問者の2.大きなif分で実質何もしないでいいと思う
695:デフォルトの名無しさん
21/02/10 16:20:11.24 ZYaksnCf.net
for_eachをbreakするにはthrowかlongjmpがいるぞ
696:デフォルトの名無しさん
21/02/10 16:35:39.62 S47HOUGT.net
きったねぇジャンプだ
697:デフォルトの名無しさん
21/02/10 16:51:31.94 HSfvjOUE.net
あ、ラムダ式になってたのか
698:はちみつ餃子
21/02/10 17:51:08.81 tNqysU9n.net
>>679
for 文で書いた方が短く書けそうだけど、
あえて for_each を使いたい理由が何かあったりするの?
699:デフォルトの名無しさん
21/02/10 18:41:41.17 FGGGEnfF.net
Perlなら問題無くできる(continue→next、だが
C++規格委員会がfor_eachのcontinueを許可しないのは最後の一線なのかもしれん…
700:デフォルトの名無しさん
21/02/10 19:51:57.06 teDb7k99.net
何の一線よ
701:デフォルトの名無しさん
21/02/10 20:18:41.39 ln/pLvjf.net
いやreturnでいいだろ…
許可しないってなんのことだよ
702:デフォルトの名無しさん
21/02/10 21:21:18.68 +e+FbMSY.net
vectorで一億件ほどで、飛ばしたいのが100~1000件程度なんだろう
703:デフォルトの名無しさん
21/02/10 21:51:25.56 QYfnOwKH.net
>>679
for_eachをrange based forに変更は出来ないの?
704:デフォルトの名無しさん
21/02/10 21:59:01.21 ZYaksnCf.net
>>690
おまえのスキルのためにか?
705:デフォルトの名無しさん
21/02/10 22:17:23.69 qtVJ0qYe.net
range based forなら普通にcontinueできるぞ
706:デフォルトの名無しさん
21/02/10 22:18:26.21 ln/pLvjf.net
>>689
飛ばす手段があったとして、飛ばすかどうかどこでどう判断するの?
707:デフォルトの名無しさん
21/02/11 04:16:42.30 nrDdTgaQ.net
early returnは正義
708:デフォルトの名無しさん
21/02/11 11:22:44.35 n0GRjtoR.net
>>685
テンプレのときとか
709:デフォルトの名無しさん
21/02/11 17:53:02.68 Iq2aKjep.net
679がなぜfor_eachを使うのかを無視するのは
他人の領分を侵すお節介だ
for_eachの使い方をアドバイスできんやつは
しゃしゃり出てくるな
710:デフォルトの名無しさん
21/02/11 18:00:13.22 hRfccug1.net
よくよく話を聞いてみたらまるで異なる解決策が見つかるなんてよくあることじゃん。そんな経験ないの?
何をしたかったか確認するのは重要
711:デフォルトの名無しさん
21/02/11 18:15:41.21 Iq2aKjep.net
流れをよく読んでみろよ
for_eachをロクに使ってないやつなのモロバレだろ
質問者が尋ねていないことを答えたいから協力しろなんてぬかすのは
回答者の資格ねえんだよ
712:デフォルトの名無しさん
21/02/11 18:18:25.32 Iq2aKjep.net
自分が何か尋ねているときに
質問内容に付き合ってやれる懐のねえやつは
うぜえだけだろが
713:デフォルトの名無しさん
21/02/11 18:23:57.31 Iq2aKjep.net
質問内容において自分より下なやつに教えを請いたいかよ
714:デフォルトの名無しさん
21/02/11 18:34:11.92 hRfccug1.net
for_eachを使う場合の答えはとっくに出てるのに何言ってんの?
715:デフォルトの名無しさん
21/02/11 19:17:08.97 15xoUz1R.net
3のその他で答えただけ。
716:デフォルトの名無しさん
21/02/11 20:01:29.92 veopzNW6.net
他人の領分なんて侵してナンボ
717:デフォルトの名無しさん
21/02/11 20:03:18.37 qccRsQET.net
>>702
はあ?returnではいけない理由は?
718:デフォルトの名無しさん
21/02/11 20:19:00.69 a/CQbB/Z.net
>>679はループしたいだけだろ
std::for_eachを何が何でも使わなければならない特殊な事情があるなら仕方ないけどそんなこと言ってないし
719:デフォルトの名無しさん
21/02/11 20:23:31.36 nDjPJyoP.net
>>704
returnで良いと思うよ。
720:デフォルトの名無しさん
21/02/11 20:50:06.93 Iq2aKjep.net
>>701
680は俺だが何言ってんの?
721:デフォルトの名無しさん
21/02/11 21:58:36.08 bviF/sLG.net
Visual Studio 2010(MSVC2010)で
template<class T>
void foo(T x) {
printf("%d: %d\n", targetEntity, x);
}
という関数テンプレートが定義されているときに、
namespace bar { const int targetEntity = 1; }
using bar::targetEntity;
void baz() { foo(100); }
はコンパイルが通るのに、
namespace bar { const int targetEntity = 1; }
void baz() {
using bar::targetEntity;
foo(100);
}
だと
error C2065: 'targetEntity': 定義されていない識別子です。
と言われるorz
722:デフォルトの名無しさん
21/02/11 22:06:56.76 bviF/sLG.net
>>688
for_eachを勘違いいてたわサーセン、
確かにfor_each<bgn, end, Function>のFunction(*it)からならreturnするで良さげ
723:デフォルトの名無しさん
21/02/11 23:28:48.49 Ooe4jkn9.net
>>707
アンパンマンはキミだ。
724:はちみつ餃子
21/02/12 01:36:02.90 2OOQ6m86.net
>>708
宣言の有効範囲は宣言された場所からその宣言を含むブロックの終わりまでというのが原則
(クラススコープなどの例外はあるのでその他にも関連するルールはあるかもしれんけど)
なのでどちらもエラーになるのが筋だと思うし、 gcc や clang で試したらどっちもエラーだった。
逆にどういう理屈で前者が通るのかは気になる。
725:デフォルトの名無しさん
21/02/12 06:02:20.64 45Tu3B4L.net
>>708
当たり前だね
最初の例ではtargetEntryをグローバル空間に導入しているからbaz()とfoo()の両方から見える
2番目の例ではtargetEntryをbaz()のブロック内に導入しているから、そこに包含されないfoo()のブロックからは見えない
ただし、これはfoo()を関数原型と関数定義に分けて関数定義をbarよりも後方に置いた場合の話だ
原文のままでは>>711が言うとおり通るわけがない
726:デフォルトの名無しさん
21/02/12 06:03:16.30 45Tu3B4L.net
- barよりも後方
+ usingよりも後方
727:デフォルトの名無しさん
21/02/12 07:01:12.63 3x5iWh5q.net
確かにideoneでもVS2019でも両方エラーになるのですだが、
1番目の例はVS2010ではビルドも通って動くもーん
ソース:
URLリンク(ideone.com)
実行結果(※ VS2010限定):
1: 100
続行するには何かキーを押してください . . .
728:デフォルトの名無しさん
21/02/12 07:04:11.00 3x5iWh5q.net
ちな関数テンプレートfoo()の定義をusingよりも後方にしたら全てでビルドが通って動く
まそりゃーそうならないとおかしいが
729:デフォルトの名無しさん
21/02/12 07:12:42.48 45Tu3B4L.net
>>714
通ってねえじゃん
何が言いたいんだ?
730:デフォルトの名無しさん
21/02/12 07:17:08.75 3x5iWh5q.net
>>716
> >>714
> 通ってねえじゃん
> 何が言いたいんだ?
※ VS2010限定
731:デフォルトの名無しさん
21/02/12 07:24:49
732:.77 ID:45Tu3B4L.net
733:デフォルトの名無しさん
21/02/12 07:27:26.57 3x5iWh5q.net
全員の主張を再検証しただけでつよ?
>原文のままでは>>711が言うとおり通るわけがない (>>712)
が覆されてご機嫌ななめ??
734:デフォルトの名無しさん
21/02/12 07:32:07.63 45Tu3B4L.net
覆った?
おまえVS2010限定で逃げただろ
ill-formedはill-formed
これを覆せたら出直して来な
735:デフォルトの名無しさん
21/02/12 07:34:53.80 45Tu3B4L.net
俺も昔のバージョンのコンパイラは使うがバグ技は使わないし
そういうことをする厨二病とは組みたくない
736:デフォルトの名無しさん
21/02/12 07:38:38.54 3x5iWh5q.net
>おまえVS2010限定で逃げただろ
VS2010ではビルドが通るというのが話の発端なので…
1番目の例がill-formedであろう点は同意
737:デフォルトの名無しさん
21/02/12 07:51:23.22 45Tu3B4L.net
orzなんだろ
何が誰が悪いのかわかったら素直になれよ
居直る態度が気に入らねえ
738:デフォルトの名無しさん
21/02/12 08:12:22.74 3x5iWh5q.net
何が悪いのか、はともかく
誰が悪いのかとは一体…
つか現象(事実)の提示に対してそれを反発と解釈して勝手に炎上しないでいただきたい;;;
個人的にはVS2010のバグである可能性でほぼ確定とは思いつつ、
例1と例2で動きが違うことから、MSVC2010は、グローバルなシンボルについて
template foo()や関数baz()の中の解釈に入る前に名前空間を確定させる実装なのだと感じる
(template foo()の解釈ロジック自体にバグがあるなら例1、2とも同じ結果になるのが自然
再発防止のためには、C++規格のどこをどう読めば良いんじゃorz
739:デフォルトの名無しさん
21/02/12 08:57:55.62 45Tu3B4L.net
>>719は明らかに煽り口調だろうが
和解したいなら、あの態度を撤回しろ
俺は和解なんかできなくて構わんが
740:デフォルトの名無しさん
21/02/12 10:26:37.15 1W1GlA05.net
匿名掲示板で誰が何を言ったのどうのとみっともないぞデフォルトの名無しさんよ
741:デフォルトの名無しさん
21/02/12 11:29:35.12 jxDcSv/l.net
どう見ても>>716がイミフな言いがかりつけてるだけにしか見えんが…
> 確かにideoneでもVS2019でも両方エラーになるのですだが、
> 1番目の例はVS2010ではビルドも通って動くもーん
742:デフォルトの名無しさん
21/02/12 13:22:44.45 x9NfpsA7.net
匿名でも江副とかQZとか片山やはちみつが糞なのは伝わってくるω
743:デフォルトの名無しさん
21/02/12 18:24:14.30 45Tu3B4L.net
単発IDになりやがった
どこまでも腐ってやがるな
744:蟻人間
21/02/12 19:12:56.39 fTOQtm+W.net
どこでも動くように標準化しましょうねって話だよね。
745:蟻人間
21/02/12 19:29:19.43 WC9JZZt5.net
G++とかclang++などの複数のコンパイラで警告最大にして自動ビルドすれば再発防止できると思われます。
746:デフォルトの名無しさん
21/02/12 19:37:54.63 3abO7oQ0.net
流れをぶった切って質問です。
あるクラスで生成、削除を一切合切プライベートにしたい(ファクトリメソッドでスマートポインタを渡す)んだけど、
::deleteを対象クラスだけプライベート、あるいはコンパイルエラーにする
ことって可能かしらん?
747:蟻人間
21/02/12 19:46:11.11 WC9JZZt5.net
>>732
private dtor使え、だとよ。
URLリンク(stackoverflow.com)
748:蟻人間
21/02/12 19:55:37.68 fTOQtm+W.net
dtorはデストラクターの略ね。
死のトラクターじゃないよ。
749:デフォルトの名無しさん
21/02/13 02:57:21.77 ZCgeuP6g.net
映画化決定。
750:
21/02/15 00:20:32.87 M7Hs01/T.net
>>728
私が馬鹿なのは私自身が認めていることですが、片山さんはすごいと思いますよ、何よりも片山さんは多産ですし、私は片山さんを尊敬しています‥‥
751:デフォルトの名無しさん
21/02/15 12:30:59.56 tZ1nblID.net
>>733
ありがとう。参考になりました。
流石にグローバルdtorの直接呼び出しを気にしている人は居なさそうですね。
通常の使い方じゃないから気にするな、が正解かしらん。
752:デフォルトの名無しさん
21/02/16 18:45:49.14 zTH+X1Xm.net
画像
URLリンク(genkibox.com)
753:デフォルトの名無しさん
21/02/16 18:59:33.07 zTH+X1Xm.net
つかprivate dtorって何の解決にもなって
なくね?
クラスFooのデストラがprivateな時点で
Fooのfirendでも何でもないstd::shared_ptr<Foo>はビルドエラーになる宿命なのでは…
あとp.get()->Delete()とされるのも恐ろしいすぐる………
754:デフォルトの名無しさん
21/02/16 19:15:28.82 Pme6j5oX.net
>>739
そのあたりは回避策ある。
どのwebページに解説あったか覚えてないけど……
755:デフォルトの名無しさん
21/02/17 08:24:04.17 Pn/OWNHb.net
operator <=>を定義しても
==と!=が使えるようにならないのは、なんで?
756:デフォルトの名無しさん
21/02/17 11:29:34.99 u6Au0MiC.net
URLリンク(cpprefjp.github.io)
のoperator==節で仕様とその理由についても説明してあります
757:デフォルトの名無しさん
21/02/17 12:05:07.17 8kTif7Fu.net
relops
758:デフォルトの名無しさん
21/02/17 12:07:48.78 ZhVk2C4b.net
relops
759:デフォルトの名無しさん
21/02/17 12:14:57.71 7xS0C1vs.net
なるほどわからん。弱順序って何よ?
760:デフォルトの名無しさん
21/02/17 13:36:33.88 peDNmUYI.net
>>745
二項関係で、反射律、推移律、比較可能性を満たすもの
761:
21/02/17 21:10:31.90 n4obO1jB.net
>>746
擬順序とか半順序と呼ぶ本もありますね、
ただ、その「比較可能性を満たす」とはなんでしょうか?私の教科書では、擬順序には反射律・推移律だけしか要請されていなかったと記憶しているのですが?
762:デフォルトの名無しさん
21/02/17 23:46:57.44 ZhVk2C4b.net
普通に言葉通り任意の2つの元を比較できるということなのでは…
木構造で「親は子より大きい」という順序を定義しただけ
(全順序集合(例えば整数)で全ノードをラベル付けしてしまうというチート手段に訴えことなく、
文字通り「if (aはbの親) { a > b; }」という規則と(a, b)の反射律、推移律を導入しただけ
では兄弟間の大小が定まらない、
みたいな
763:デフォルトの名無しさん
21/02/17 23:47:32.54 ZhVk2C4b.net
のは半順序で、
整数みたいなやつが全順序
764:デフォルトの名無しさん
21/02/17 23:59:39.55 ZhVk2C4b.net
なお{ 全順序集合 }⊂{ 半順序集合 }なのは確定的に明らかなので、
反射律・推移律だけしか要請されていなかったらそれは全順序集合の集合を含む半順序集合の集合の意味となりぬ
つまり全順序集合の集合と半順序集合の集合が区別できん
両社を区別したい議論のときは比較可能性の有無を宣明せねばならんぬ、
765:デフォルトの名無しさん
21/02/18 00:34:07.44 48a8FzyN.net
a≦b または b≦aが成り立つ時、比較可能
弱順序ってしらなかったけど、半順序とは違うようだ
「半順序?弱順序?二項関係・順序関係まとめ」って記事
766:デフォルトの名無しさん
21/02/18 03:35:31.61 sRdwF113.net
束論やってるけど弱順序とか初めて聞いた…
マ界用語?
767:741
21/02/18 06:50:20.77 brZHVFLx.net
>>74
768:2 まだ何とも言えないが thx!
769:デフォルトの名無しさん
21/02/18 10:08:01.17 48a8FzyN.net
弱順序は、半順序よりは制限強いが全順序より弱いもので、
ある種のソートアルゴリズムでは全順序よりは制限緩められるけど
半順序までは緩められない、ってのがあるみたいね
770:デフォルトの名無しさん
21/02/18 13:16:30.49 9Yl3mCZH.net
>>752
束って何で勉強すればいいん?
771:デフォルトの名無しさん
21/02/18 14:43:05.98 48a8FzyN.net
アルゴリズムとの関連はちょっとわからんけど
数学としての束論って単独の本は少なくて、代数学の本に載ってるんじゃないかな
もしくは順序集合の話として集合論の本
772:
21/02/19 04:42:11.06 3tFNJrqv.net
>>748
>普通に言葉通り任意の2つの元を比較できるということなのでは…
いや、それは全順序ですよ
・擬順序
・順序
これらの演算子を≦としたとき、かならずしも任意の二元 a, b について a ≦ b の真偽が定まらなくてもいいと思います
擬順序に対して「a ≦ b かつ b ≦ a ならば a = b」という縛りが追加されるのが順序、
順序に対して、任意の二元 a, b について「a ≦ b」または「b ≦ a」のどちらかである、という縛りが要請されるのが全順序
だったかと
773:デフォルトの名無しさん
21/02/19 20:38:08.11 mpGE+xsF.net
wikipediaの「推移関係」の項目より
半順序 - 反対称的な擬順序
擬順序 - 推移的であると同時に反射的
全擬順序 - 完全的な擬順序
同値関係 - 対称的な擬順序
厳密弱順序 - 強半順序関係で等価関係での比較が不可能な場合
全順序 - 推移的で反対称的な完全関係
全順序、半順序くらいしか知らんかった
774:デフォルトの名無しさん
21/02/19 20:51:11.65 gWMDVcMR.net
OOPの本だとサブクラス関係は前順序って書いてるよな?擬順序ともいうのか
推移的、A→B∧B→C |- A→C 、サブクラスのサブクラスはサブクラス
かつ反射的、AはAのサブクラス
775:デフォルトの名無しさん
21/02/19 20:55:11.79 fAhRarpN.net
>>757
>いや、それは全順序ですよ
は? その条件が共通なだけだろ
776:
21/02/19 21:23:56.68 3tFNJrqv.net
>>760
一番弱い順序、推移的かつ反射的であるのみの順序関係は、実は任意の二項間においてかならずしも順序関係の真偽が定まらなくてもいいのですよ
すべての二項間で順序の真偽が定まるのは、順序の中でも一番強いものである全順序で初めて導入される、と私は解釈しています