C++相談室 part154 at TECH
[2ch|▼Menu]
[前50を表示]
400:デフォルトの名無しさん
21/01/31 17:57:13.23 fCVb5Gn/.net
テンプレートなんか普通にヘッダに内容全部を書くが
マクロでバカやるやつがいなければ平和だよ

401:デフォルトの名無しさん
21/01/31 17:58:49.95 A8yllSCF.net
ローカルスコープでも _x が禁止だというなら >>346 のマクロ a 定義内で _x を使っていい理屈もわからんよな。

402:デフォルトの名無しさん
21/01/31 18:55:26.91 gXTMTlGe.net
std::pair<>を継承してquadを作る場合どうなりますか?

403:デフォルトの名無しさん
21/01/31 18:58:05.19 gXTMTlGe.net
std::regexが意外と使える子に成長してますが、標準化委員会では捨て去る提案まで出てるそうで。

404:デフォルトの名無しさん
21/01/31 19:37:14.68 /1NNOLNs.net
std::regexはプロパティが貧弱なので結局、従来の正規表現ライブラリ使う羽目になる。
std::regexと互換性のあるインターフェースを持つ正規表現クラスを提供するよう呼びかけるのが現実的。

405:デフォルトの名無しさん
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
殺虫剤のパラドックスって知ってる?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

287日前に更新/256 KB
担当:undef