C++相談室 part154 at TECH
[2ch|▼Menu]
[前50を表示]
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()がなかった。(遠い目)


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

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