C++相談室 part166 (635レス)
C++相談室 part166 http://mevius.5ch.net/test/read.cgi/tech/1745631298/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
571: デフォルトの名無しさん (ワッチョイ cda1-2ooF) [sage] 2025/08/04(月) 07:34:20.02 ID:0gfRmGh70 Q1については、他スレッドから見てm_ulBiasのreadが m_mutex.lock()期間(クリティカルセクション)内のm_ulAbortReasonBmpへの書き込みより 先行するようなことが起きるとクリティカルセクションの意味が消失するから保証される Q2についてはm_ulBiasのreadがプロセッサコアにどう計画されるかわからないから m_ulAbortReasonBmpへの書き込みの後になることは一般に保証されない、 が、現在人類が手にしているクリティカルセクションの実装(lock期間に入るときと出るときそれぞれで いかなるreadもwriteも無差別にバリアする)により、lockしないスレッドから見ても順序が実質的に保証される、 でおk? http://mevius.5ch.net/test/read.cgi/tech/1745631298/571
572: デフォルトの名無しさん (ワッチョイ cda1-2ooF) [sage] 2025/08/04(月) 08:33:59.43 ID:0gfRmGh70 訂正orz、 Q2のケースでは保証されない 現在人類が手にしているクリティカルセクションの実装(lock期間に入るときと出るときそれぞれで いかなるreadもwriteも無差別にバリアする)のが真実だとしても、 それはm_ulAbortReasonBmpやm_ulBiasをwriteする側のスレッドがwrite順を守るというだけで、 m_ulAbortReasonBmpやm_ulBiasをreadする側のスレッドにはメモリバリアするコードが無いから read順を好きに計画され、writeした順でreadされる保証が無い http://mevius.5ch.net/test/read.cgi/tech/1745631298/572
573: デフォルトの名無しさん (ワッチョイ 5f79-1HMX) [sage] 2025/08/04(月) 08:41:31.47 ID:3rv0HXUI0 >ちょっ かわいい …舐めてんの? http://mevius.5ch.net/test/read.cgi/tech/1745631298/573
574: デフォルトの名無しさん (ワッチョイ e3b9-Psuq) [sage] 2025/08/04(月) 16:26:39.26 ID:Tt4A7oMm0 >>572 コードに無いreadの話が入ってくるのが意味がわからない 聞きたいことはwriteの順番が保証されるかではないのか? writeの順番は保証される http://mevius.5ch.net/test/read.cgi/tech/1745631298/574
575: デフォルトの名無しさん (ワッチョイ 7f4e-W9J6) [] 2025/08/10(日) 21:35:26.79 ID:gXfPFnW/0 男きたああああああああああ http://mevius.5ch.net/test/read.cgi/tech/1745631298/575
576: デフォルトの名無しさん (ワッチョイ d322-PSkW) [] 2025/08/22(金) 07:16:07.15 ID:iDw/vpGA0 初心者だけど、 Pythonみたいにreturnを複数ってできないの? touple使うくらい? http://mevius.5ch.net/test/read.cgi/tech/1745631298/576
577: デフォルトの名無しさん (ワッチョイ 5bfd-Srv/) [sage] 2025/08/22(金) 07:35:30.89 ID:8V9ySHS/0 複数の値を一つにまとめればいいだけ 返す型次第 http://mevius.5ch.net/test/read.cgi/tech/1745631298/577
578: デフォルトの名無しさん (ワッチョイ 5b85-ZBQJ) [] 2025/08/22(金) 08:55:40.38 ID:LQncxxKI0 複数返したいならタプルでいいんじゃない 引数に出力渡すのが多いと思うけど http://mevius.5ch.net/test/read.cgi/tech/1745631298/578
579: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5932-86vp) [sage] 2025/08/22(金) 10:34:20.59 ID:s1oN92u00 Python でも返却値として複数の値を返すことは出来ない。 Python で return にカンマ区切りで複数の式を書くとタプルになってる。 受け取る側で複数の変数を書いておけばタプルが分配 (unpack) されたりはするけど…… 関数が返却しているのはあくまでもひとつの値という理屈。 複数の値 (いわゆる多値) を関数が返せる言語はそれほど多くない。 LISP 系は多値のサポートがあることが多いけどそれ以外だと Go くらいじゃないかな? (マイナー言語だとわからんけどよく知られている主要な言語にはほとんどないと思う。) シンタクス的には C++ で return にカンマ区切りで複数の値を渡そうとしたとき、 つまり return 1, 2, 3; というように書いたときのカンマはカンマ演算子として解釈される。 カンマ演算子は左辺の結果を捨てる (評価はする) ので 3 だけが返却値になる。 C++ で複数の値をひとまとめにするには波括弧で囲む記法があって std::tuple<int, int, int> foo(void) { return {1, 2, 3}; } というように書けるんだが…… この波括弧は初期化の記法であってタプルのリテラルというわけではないのでそこんところは注意。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/579
580: デフォルトの名無しさん (ワッチョイ d1d6-uNzz) [sage] 2025/08/22(金) 10:49:05.94 ID:hiXhYkKD0 >>579 受け取る方はどうやって受ければいいのですか? 私の頭だと構造体で返せばいいかな なんつて http://mevius.5ch.net/test/read.cgi/tech/1745631298/580
581: デフォルトの名無しさん (ブーイモ MMb3-Srv/) [sage] 2025/08/22(金) 11:06:34.54 ID:HM+/3rtsM >>580 構造化束縛で取り出すのが楽 構造体を定義する手間が気にならないならそれでもいい http://mevius.5ch.net/test/read.cgi/tech/1745631298/581
582: デフォルトの名無しさん (スププ Sdb3-im2P) [sage] 2025/08/22(金) 11:49:05.11 ID:ZeYv0pFNd C++も昔に比べれば随分と楽になった http://mevius.5ch.net/test/read.cgi/tech/1745631298/582
583: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5932-86vp) [sage] 2025/08/22(金) 12:07:46.82 ID:s1oN92u00 >>580 タプルは単にタプル型の値なので普通に受け取れる。 auto bar = foo(); といったように書ける。 タプルから要素を取り出すのは std::get<0>(bar); といった要領になる。 受け取るときに変数に分配するやり方もあって atuo [r1, r2, r3] = foo(); というようにも書ける。 これを構造化束縛という。 おそらくこれが期待していたものなんじゃないか? この記法はタプルに限らずタプルライクな型、配列型、データメンバが全て公開直接メンバであるような型などであれば使える。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/583
584: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5932-86vp) [sage] 2025/08/22(金) 12:23:44.06 ID:s1oN92u00 もし使っているコンパイラが MSVC なら MSVC のデフォルトでは C++14 になってるはずだからそのままだと構造化束縛を使えないかも。 (構造化束縛は C++17 から。) 私は MSVC を利用していないから具体的なやり方は知らんけど必要なら適当に設定してね。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/584
585: デフォルトの名無しさん (ワッチョイ d1d6-uNzz) [sage] 2025/08/22(金) 17:49:52.20 ID:hiXhYkKD0 どもです。構造化束縛ね。なんか聞いた事あるかなという程度だった。 使うかなぁ・・・ http://mevius.5ch.net/test/read.cgi/tech/1745631298/585
586: デフォルトの名無しさん (ワッチョイ c1ad-F95I) [sage] 2025/08/22(金) 21:41:35.66 ID:NcnZjMQ+0 構造体ほど強いまとまりではなく、返り値だけのゆるいまとまりなら構造化束縛の方が便利だけどねぇ http://mevius.5ch.net/test/read.cgi/tech/1745631298/586
587: デフォルトの名無しさん (ワッチョイ d38d-PSkW) [] 2025/08/22(金) 21:41:55.58 ID:iDw/vpGA0 >>579 std::tuple<int, float, long> foo(void) { return {1, 2.1, 99}; } atuo [r1, r2, r3] = foo(); って書いたら、 r1に1が、r2に2.1が入るの? まあそれでもいいかな PythonからC++に移植中で、ちょっと読みづらいと思ったので… http://mevius.5ch.net/test/read.cgi/tech/1745631298/587
588: デフォルトの名無しさん (ワッチョイ d38d-PSkW) [] 2025/08/22(金) 21:45:40.16 ID:iDw/vpGA0 >>587 まあでも、なんで複数returnにしないのかね? outの引数が多すぎだわ http://mevius.5ch.net/test/read.cgi/tech/1745631298/588
589: デフォルトの名無しさん (ワッチョイ c1ad-F95I) [sage] 2025/08/22(金) 22:11:20.77 ID:NcnZjMQ+0 Python でも複数return ってできないと思うけど? カンマ演算子でタプルを作って返してるだけでしょ http://mevius.5ch.net/test/read.cgi/tech/1745631298/589
590: デフォルトの名無しさん (ワッチョイ 51a5-VfJp) [sage] 2025/08/22(金) 23:03:10.61 ID:5NhjtIih0 そうやね。Pytnonのカンマは、言語仕様上は演算子とは一応区別されているみたいだけど、感覚的には演算子だよね。何で演算子ではないんだろうというのはちょっとした疑問だけど(1, みたいなのを後置演算子と呼ぶのはちょっと変とかそういうことかな?) http://mevius.5ch.net/test/read.cgi/tech/1745631298/590
591: デフォルトの名無しさん (ワッチョイ d1d6-uNzz) [sage] 2025/08/23(土) 01:30:59.35 ID:ynkOCuVA0 //こんな感じ? #include <iostream> #include <tuple> using namespace std; tuple<int, float, long> foo() { return {1, 2.1, 99}; } int main(){ auto [r1, r2, r3] = foo(); cout<<r1<<endl; cout<<r2<<endl; cout<<r3<<endl; return 0; } http://mevius.5ch.net/test/read.cgi/tech/1745631298/591
592: デフォルトの名無しさん (ワッチョイ 7101-Im4V) [sage] 2025/08/23(土) 01:57:32.43 ID:HIKpDy1T0 構造化束縛を調べてみたら fooの返り値はtupleでなくてもpairで返しても良さそうなんだけど どういうルールなの? キモい http://mevius.5ch.net/test/read.cgi/tech/1745631298/592
593: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5932-oZZu) [sage] 2025/08/23(土) 02:11:02.56 ID:CHT0FIec0 >>592 それがタプルライクの概念。 std::tuple_size の特殊化など、いくつかのインターフェイスを実装すればタプルと同じように扱ってくれる仕組み。 それとは別に配列の場合とか、全てのデータメンバが公開直接メンバなクラスもありということになってるのは単純に箇条書きで数種類のパターンを示す形になってる。 それほどパターンが多くはないがひとつの原則で表せるわけでもない。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/593
594: デフォルトの名無しさん (ワッチョイ 7101-Im4V) [sage] 2025/08/23(土) 02:22:04.99 ID:HIKpDy1T0 >>593 >それほどパターンが多くはないがひとつの原則で表せるわけでもない。 キメぇよw http://mevius.5ch.net/test/read.cgi/tech/1745631298/594
595: デフォルトの名無しさん (ワッチョイ 2b10-fgJ7) [sage] 2025/08/23(土) 09:17:36.36 ID:rBYkDYvT0 構造的部分型とか静的ダックタイピングって呼ばれるやつ? http://mevius.5ch.net/test/read.cgi/tech/1745631298/595
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 40 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s