C++相談室 part154

■ このスレッドは過去ログ倉庫に格納されています
2021/01/08(金) 17:54:00.55ID:0DW9z0rL
※前スレ
C++相談室 part153
https://mevius.5ch.net/test/read.cgi/tech/1602339500/

テンプレここまで
2021/02/04(木) 15:40:11.75ID:R0EDVzG0
>>479
いや、全て32BITは、それに全て統一することで速度とメモリ効率と実用性の
バランスが取れていた。
ところが64BITだと実用上、表せる値の範囲はオーバースペックで
変数のメモリに占めるバイト数が8バイトと余りにも効率が悪い。
なので、多くの数値は32BITとし、必要な部分だけ64BITにするという
面倒な選択を強いられる様になった。
アドレスが64BITなので、それを整数型に入れるためには32BITの整数では
不足するので引きつられて整数も64BITを必要としがちになり、大混乱
が生じている。
(また、メモリーもアドレスを32BITより多くを必要とするアプリは非常に稀。)
2021/02/04(木) 16:48:02.49ID:DWE1XJjK
>>482
ありがとうございます
ストラウストラップの「プログラミング言語C++」に「行列クラスの設計」なるセクションがあったのを覚えてるので、そちらではどうしていたかも見てみます
2021/02/04(木) 17:07:22.68ID:dB2jWvbu
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 は使ってはいけないのでしょうか?
2021/02/04(木) 17:51:26.68ID:b9gCdorg
>>487
485も見てねー
2021/02/04(木) 17:52:07.72ID:b9gCdorg
まちがえた。484
2021/02/04(木) 20:56:33.92ID:ZyzsEROR
配列のunique_ptrは色々と中途半端で使いづらいからオススメしない
2021/02/04(木) 22:14:32.91ID:b9gCdorg
>>488
unique_ptr<Hoge[]> p;
p.reset(new Hoge[4]{a, b, c, d});
でよいのでは?
2021/02/04(木) 22:20:26.07ID:un3OWVjy
>>486
32bitアプリでも今どきなら64bit整数を使える処理系は多いだろ
そもそもアドレスを整数型に入れるっていつの時代の人よw
2021/02/04(木) 22:47:34.63ID:/RiZUiBF
>>493
アドレスを整数に入れるのは過去の話じゃないぞ
2021/02/04(木) 22:51:09.67ID:sIhIIpMX
intptr_t整数型を使ってたのっていつの時代?
2021/02/04(木) 23:24:48.23ID:hMfhfQWp
uintptr_tならいつもお世話になっております
2021/02/05(金) 00:01:41.63ID:NIkVqohR
この手合いのボケを量産するのはC++の害だな
2021/02/05(金) 01:35:15.82ID:EB7VAtvO
むしろCの害
2021/02/05(金) 01:52:47.05ID:xbM9VFWh
Rubyって結局勉強しないままPythonの時代になってしまったな
2021/02/05(金) 04:42:48.12ID:ZuGfyZDY
同様にC++を勉強しないままRustの時代になる
501デフォルトの名無しさん
垢版 |
2021/02/05(金) 09:51:39.70ID:U76qOqQA
>>488
https://www.it-swarm.jp.net/ja/c%2B%2B/new演算子よりもstd-makeuniqueを使用する利点/826350881/amp/
https://ja.stackoverflow.com/questions/24876/make-uniqueの利点
2021/02/05(金) 13:28:24.98ID:ou/gU5gH
c++やらずにrustとか馬鹿量産するだけにしか思えんな。
2021/02/05(金) 14:10:32.07ID:Xzu/prlh
それ言ったらノーコードがどうたら言ってる奴らはもっとやばそう
2021/02/05(金) 14:17:08.86ID:M7C1cdPI
ノーコードていってノードツリーみたいなのでフロー管理するやつ
よくゲーム系ツールにありがちだけど、サンプルみたいな単純な処理ならともかく
こみいったフローになってくるとノード間の接続線がものすごいことになって
とても管理しようという気になれない、まさに見た目どおりのスパゲティプログラムに
2021/02/05(金) 14:18:44.73ID:ou/gU5gH
>>503
それはもう50年くらいずっとそうだろ。
ノーコードとか逆に俺様言語作ってるのとほぼ変わらん状態にしかならんという
しょーもない展開しか見たことない。
506デフォルトの名無しさん
垢版 |
2021/02/05(金) 15:14:07.00ID:zImWQG8r
VCPKGのupdate、upgradeが常に失敗するんだけど、使えてる人いますか?
小まめにupdateしないからだろか?
507デフォルトの名無しさん
垢版 |
2021/02/05(金) 15:14:37.91ID:zImWQG8r
Goは標準ライブラリが圧倒してる。
508デフォルトの名無しさん
垢版 |
2021/02/05(金) 15:18:44.78ID:zImWQG8r
半年に一度フルビルドみたいになってしまう。
2021/02/05(金) 16:12:02.35ID:A9cGRDK5
Goは何がクソといってまず名前がクソ
510デフォルトの名無しさん
垢版 |
2021/02/05(金) 16:36:26.85ID:zImWQG8r
C++は基本だから、義務教育で習得するべき。
2021/02/05(金) 16:50:43.11ID:/MNAnFTn
言語仕様がでかすぎるからC言語で精一杯
オマケで紹介される程度かな
2021/02/05(金) 18:21:14.28ID:7P5D6x+s
>>505
昔はアセンブラすら触れない奴がC言語とか笑わせるなとか真顔で言う人がいたんだぜ。

別に仕事ができるのならRustでもPythonでも何でもいいと思うぞ。
2021/02/05(金) 19:09:46.26ID:AjJLCZml
仕事ができるのならw
2021/02/05(金) 20:48:06.29ID:ou/gU5gH
>>512
仕事ができるならなw
できないカスがクソみたいなもん押し付けてくるから文句が出るんだよ。
rustでもpythonでもまともなコード書いてりゃ文句はないわ。
まともじゃないから文句が出る。
515デフォルトの名無しさん
垢版 |
2021/02/05(金) 21:49:13.85ID:a81hUa+F
というか、プログラマとしてrust(鉄さび、腐食)になるというダブルミーニングを狙ったんだと思うけど。
2021/02/05(金) 21:59:53.11ID:kFtfKVND
お前らってド素人のくせになんでいっちょまえの口利くん?
それって不思議だわ
2021/02/05(金) 22:34:33.49ID:EB7VAtvO
Rustの名前は金属の錆じゃなくてサビ菌が由来
2021/02/05(金) 22:36:07.20ID:NIkVqohR
Rottenでいい
2021/02/05(金) 22:48:47.57ID:a81hUa+F
Perl6はRakuになってしまったし、Rustもいずれ「わびさび」の境地でSabiに改名されるでしょ。
2021/02/06(土) 03:04:22.39ID:kQVOjfvp
「まともなコードが書けるなら」じゃなくて、まともなコードを強制するのがRustという言語の方針だと思うが
2021/02/06(土) 04:45:05.79ID:oQfB5lBJ
>>284
昔からのプログラミング/電気界隈の慣習だから仕方ないけど、2要素のミニマルなブール代数しか扱わないにも関わらずboolean型を称するのがそもそもキモい
プログラミングで使うような半順序関係は、9割booleanで書くのが一番スッキリする
一般のbool型をプリミティブにして、そこからt/fやら三要素やらに派生するのが合理的に思う
522デフォルトの名無しさん
垢版 |
2021/02/06(土) 04:50:47.70ID:GfZyzG1j
ブーリアン革命。
2021/02/06(土) 05:13:59.88ID:oQfB5lBJ
革命というか、クラスシステムでブール代数をエミュレートしてるのが現状のOOPじゃないかと
まあ言語によって可補性はマチマチだけど、全てについてスーパークラス/サブクラスなクラスを設けるのは、メインストリームの言語では大体そうだろ
2021/02/06(土) 07:27:56.30ID:S9Y30hRK
>>520
だとしたら胡散臭さ200%のカルトだな
2021/02/06(土) 09:31:12.13ID:rZdEmaWa
>>524
Java、Kotlin、Scala、C#、Ruby、Python、PHP
あたりのどれかを触ってみれば、危険な記述を言語仕様レベルで封印することのありがたさが分かる

他言語も触ってみることをオススメする
2021/02/06(土) 09:34:34.84ID:5Ze23T9D
よくわからんが安全カミソリみたいなものかね?
2021/02/06(土) 10:10:31.61ID:rZdEmaWa
>>526
そんな感じ

まぁ、C++もマスターすれば危険な記述を避けることはできるんだけど...
プログラマーが悪意を持ってプログラムを記述しない限り安全なコードになるようにしようという試みは大切だと思う
2021/02/06(土) 10:11:15.51ID:S9Y30hRK
>>525
ありがとう、おまえさんのレベルの低さがよくわかった
文法や動作がよくわかってなくてマシンに警告してもらわなきゃ自分では判断できないんだな
アプリの内容として良からぬ事を企むという次元には程遠いわけか
2021/02/06(土) 10:12:54.42ID:rZdEmaWa
>>528
投稿した瞬間の不意打ちレスワロス
2021/02/06(土) 10:17:55.71ID:u/OM7jGY
>>527
> プログラマーが悪vログラマーが悪意を持ってプログラムを記述しない限り安全なコードになるようにしようという試みは大切だと思う

>>528
> 文法や動作がよくわかってなくてマシンに警告してもらわなきゃ自分では判断できないんだな

この流れは大草原不可避
531デフォルトの名無しさん
垢版 |
2021/02/06(土) 11:01:19.43ID:PohEB++t
>>504
Unity とか UE はきらい?
532デフォルトの名無しさん
垢版 |
2021/02/06(土) 11:07:09.44ID:PohEB++t
>>509
めっちゃわかります
https://blog.golang.org/gopher
http://write.kogus.org/articles/S78LHt
2021/02/06(土) 11:09:03.81ID:gLiOOG5V
rustの縛りプレイはマルチスレッドでのメモリ管理のクソ面倒さが原因だろう
2021/02/06(土) 12:19:39.89ID:S9Y30hRK
>>527
いーや、くだらねえ
プログラマを信頼しない方針はあれもダメこれもダメの制限だらけになるだけだ
おまえさん自身も実社会で職場の誰よりも制限だらけなんだろう
重責を担ったことのないやつは人のせいにすることしか考えねえ
2021/02/06(土) 12:25:16.36ID:UXUwo66G
それだけ無責任で信頼出来ない人間が多いって事だろ
2021/02/06(土) 12:31:39.86ID:58EQLFGq
信頼はタダではないからな
バグを流出させたら銃殺ぐらいが妥当
2021/02/06(土) 12:53:16.04ID:DutNpJ49
>>528
お前のレベルが極めて高いのは分かったが、お前の共同の開発者もお前のようにハイレベルだとは限らない
2021/02/06(土) 13:19:02.89ID:Hu1Z4B3S
>>534
負け犬の遠吠え
2021/02/06(土) 13:29:55.66ID:EjDQT0l8
>>460
「(type)~0」でどう?
2021/02/06(土) 13:32:30.22ID:TGsCRbLO
>>536
ハゲを流出させたら〜と空目した
2021/02/06(土) 13:33:33.54ID:rZdEmaWa
>>538
しー!余計なことを言うんじゃないっ!
2021/02/06(土) 13:38:49.17ID:Hu1Z4B3S
>>528はスマートポインタを知らなさそう
文章から溢れ出る無能感
2021/02/06(土) 13:44:48.20ID:S9Y30hRK
構ってちゃんは、スマポ憶えたてらしいなw
2021/02/06(土) 13:46:38.15ID:gYQHLnIz
天才の俺が書くプログラムは絶対正しいから無駄なバカよけ機能はいらないしテストのような下等なことはしない
って豪語してたいつぞやの天才くんが帰ってきたのかな
2021/02/06(土) 13:50:19.96ID:kbrcRlAn
>>544
私は馬鹿なので天才のコードというのがどんなのか凄く興味があります…
2021/02/06(土) 13:53:43.56ID:ROiZJzWf
コテハンでこの程度の文章も読めないのは
2021/02/06(土) 13:55:54.96ID:kbrcRlAn
>>546
そりゃ馬鹿だからでしょう…
2021/02/06(土) 13:59:04.79ID:aJ9IYVGP
どう考えても誰かさんに対する皮肉なんだよなぁ...
まぁ、荒れるから誰とは言わないけど
2021/02/06(土) 14:05:03.59ID:fN0CSTPN
傲慢かましすぎもへりくだりすぎも良くない
2021/02/06(土) 14:06:38.65ID:zTEH7215
>>548
すでに荒れる種をまいてるきみが一番有害
2021/02/06(土) 14:12:51.02ID:aJ9IYVGP
>>550
いや、俺は別にS9Y30hRKは天才だと思ってるぞ!誰もS9Y30hRKの事をゲロカス老害だとか、バグを減らす上での有害な存在だとか、人を見下すだけの無能だとか、自分にとって都合のいい妄想を口に出す病人だとか、構ってちゃんだとか、そんなこと全然思っていないから!!S9Y30hRKは天才!!疑う余地もなく天才!!ハイレベルなバカで誰もついていけないとか、そんなこと思っていないから!!!
だから!それ以上この話はやめろぉおおおお!!!
2021/02/06(土) 14:21:36.41ID:rZdEmaWa
>>545
馬鹿でも扱えるくらい綺麗なコードが天才のコードだと思う
C++は表現豊かな言語だから...他の言語も触ると、綺麗な記述方法を学ぶ良い機会になるよ
2021/02/06(土) 14:56:25.58ID:58EQLFGq
>>552が扱えるかどうかが天才か否かの基準か!
2021/02/06(土) 15:01:56.11ID:S9Y30hRK
綺麗かどうかじゃない
何を実現したのかだ
綺麗に書くのはエチケットだが一番大事なことではない
2021/02/06(土) 15:11:21.64ID:f5ipo2xA
>>553
銃殺は銃刀法違反及び殺人罪に接触することすら理解できないお前でも分かるコードが存在したら私はそのコードを書いた天才を尊敬する
2021/02/06(土) 15:21:29.14ID:58EQLFGq
行政が法律に基づき行うなら問題無い
人が作った法律なら人が改正することができる
2021/02/06(土) 15:22:17.24ID:S9Y30hRK
スレ違い板違い失せろ
2021/02/06(土) 15:28:25.66ID:58EQLFGq
>>557
>>555に対するレス
2021/02/06(土) 15:30:29.13ID:f5ipo2xA
自作自演?
2021/02/06(土) 16:36:26.06ID:oR/8CbQ7
やらかしちゃいましたねー
人を見下しておきながら、人を見下す側もウッカリミスはするという事が証明されました

こういうウッカリ屋はプログラミングでも不具合を引き起こします
馬鹿でも天才でもウッカリ屋でも保守できるコードは記述するように心がけましょう
2021/02/06(土) 16:38:50.88ID:oR/8CbQ7
>>560
他にもテストの自動化、バージョン管理ツールの導入等もして不具合が流出しない仕組みを揃えておきましょう
以上
2021/02/06(土) 16:54:20.22ID:bwIKlxQ8
std::stringにUTF-8のコードを入れてプログラムを書いていますが、これを正しく編集する
にはUTF-8での文字の境界を正しく認識しないと駄目ですよね?
それは一般的にはどう処理するものなのでしょうか。

UTF-8のビットパターンとバイト数のことは知っていますが、それを自分で処理すべきか、
さらには絵文字とか複数のユニコードが組み合わさったものはどうするのか、とか。
2021/02/06(土) 17:05:10.96ID:N9CbrPsc
>>562
コードポイント単位での処理で良いのであれば自分で適当に書いてしまってもいいと思う。

高度なものになると ICU などのライブラリを使う。
書記素クラスタ単位での処理が必要だったり正規化だったりといった場合では
コードを書けば済むというものでもなくて巨大な表が必要だし歴史的な変な規則が盛りだくさんだから
よほどの根性がないと自分ではどうにもならないと思う。
2021/02/06(土) 17:07:58.83ID:gG6zzvvp
>>562 Windowsだったら
#include <windows.h>
MultiByteToWideChar(CP_UTF8, 0, ...);
MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, ...);
WideCharToMultiByte(CP_UTF8, 0, ...);
IsTextUnicode(...);
などが使えると思われます。
565デフォルトの名無しさん
垢版 |
2021/02/06(土) 17:41:00.54ID:GfZyzG1j
スカラー値が一文字を表現するとは限りませんが、ユニコードスカラー値を基本にするのが現実的な妥協点だと思います。
きちんと処理するのは、データベースとアルゴリズムが必要なので、少人数では無理です。
ICUが有力な選択肢となりますが、これも気難しいライブラリなので、用途に合わないかもしれません。

事実上、世界中の様々な民族の文字を統一的に扱う目論見は破綻していると思います。
2021/02/06(土) 17:44:16.27ID:+KPQZs33
https://youtu.be/wN0x9eZLix4
2021/02/06(土) 17:50:18.63ID:gG6zzvvp
https://ja.wikipedia.org/wiki/UTF-8

>任意のバイトの先頭ビットが "0" なら1バイト文字、"10" なら2バイト以上の文字の2番目以降のバイト、...(中略)...であると判定できる。
2021/02/06(土) 17:55:50.63ID:gG6zzvvp
つまり、

uint8_t utf8_byte = ...;
if (!(utf8_byte & 0x80)) {
// 1バイト文字。
} else if ((utf8_byte & 0xC0) == 0xC0) {
// マルチバイト文字の先頭バイト。
} else {
// マルチバイト文字の非先頭バイト。
}
2021/02/06(土) 18:11:29.66ID:6eQmSTNr
プログラミングのお題スレ Part18
https://mevius.5ch.net/test/read.cgi/tech/1594702426/453

UTF-8 は、先頭ニブル・4ビットで、1〜4バイト文字を判別しています

こういう規則か?
2021/02/06(土) 19:16:40.60ID:S9Y30hRK
>>561
殺虫剤のパラドックスって知ってる?
2021/02/06(土) 20:33:00.74ID:zn5WrP4C
>>570
恥の上塗り?w

ただし、自動化されたリグレッションテストの場合は、同じテストを繰り返すことでリグレッションが低減しているという有益な結果を示すことができる。
https://note.com/akiyama924/n/nc006015de2d2
572デフォルトの名無しさん
垢版 |
2021/02/06(土) 21:07:07.97ID:GfZyzG1j
テストロボットだぞ、ガシャーン!ガシャーン!
573デフォルトの名無しさん
垢版 |
2021/02/06(土) 21:08:55.93ID:GfZyzG1j
片山さんの自動パズルとか、ウェブだったら☆1万くらいついてそうだけど。
なんでWindowsにこだわるんだろ。
2021/02/06(土) 22:54:31.87ID:gG6zzvvp
>>573 JavaScriptで動くものはすでにある。
https://katahiromz.github.io/xword.js/
あるが、ビジネスとして展開する能力がない。
2021/02/06(土) 23:50:48.27ID:58EQLFGq
クレブナー基底で解くやつ!
2021/02/07(日) 06:07:42.85ID:HYoiJUgB
>>571
質問に答えてねw
2021/02/07(日) 06:47:27.09ID:jX/y7Db/
>>576
ん?
どの質問?
>>570ならリンク先読めばいいだけだろ
恥ずかしくて読めないのかもしれないけどw
2021/02/07(日) 08:26:36.56ID:HYoiJUgB
>>576
俺の質問にアンカーつけといてどの質問はねえだろ
恥ずかしくてとぼけてんのおまえさんだろ
2021/02/07(日) 08:29:49.52ID:p49/UnNX
テストはやらないよりもやったほうがはるかに良い
前の版通ったテストが最新版でも通るという品質は担保される
殺虫剤のパラドックスよりも恐れなければならないのは
いっぱい作ったテストコードが事実上同じテストでしかないという事態になることの方
※ 個人の感想です
2021/02/07(日) 08:49:47.79ID:m5BD34IK
>>578
別に完璧になくせるなんて誰も言っていないのに勝手にツッコんでるの何?としか思ってないよ
2021/02/07(日) 08:57:32.70ID:HYoiJUgB
>>580
おまえさん、こう言ったんだぜ

> 不具合が流出しない仕組みを揃えておきましょう

流出しなくなんかならねえ
不具合はポカミスばかりとは限らない
おまえさんのような浅はかな思想で突っ走った先に
碌でもない結末が待っていることだってある

揃えられるものなら揃えてみな
自分ができねえことを他人に言うな
2021/02/07(日) 09:11:28.01ID:p49/UnNX
人は思い込みを反証することで生きていける
だが完璧に反証できないこともある
ユニットテストはそのかけがえのないものを教えてくれた
2021/02/07(日) 09:41:41.73ID:m5BD34IK
>>581
え?それ俺じゃないけど
テストやればバグが無いといえるわけじゃないから安心するなってだけで、テストするなって話じゃないよね
主旨は同じだよね
何が気に入らないの?
2021/02/07(日) 10:00:05.54ID:HYoiJUgB
ああ、俺じゃないで逃げるのか
情けねえやつだな
2021/02/07(日) 10:07:20.85ID:jX/y7Db/
>>578
アンカーつけてると言うなら
> >>570ならリンク先読めばいいだけだろ
って書いてあるだろ
よほどアホでもない限りそんなアホなこと言うわけ無いと思ったからどれ?
って聞いたんだけど、想像以上のアホだったってことかな?w
2021/02/07(日) 10:10:29.25ID:jX/y7Db/
>>581
不具合はなくせないから仕組みも努力もいらんと言うならそれでいいんじゃね?
お・ま・え・ん・と・ろ・こ・で・は w
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況