[過去ログ] C++相談室 part165 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
573: (ワッチョイ 4e8d-7yGp) 2024/11/20(水)21:21 ID:JO5RbARc0(1) AAS
アホといい切れる根拠は言える?
574: (ワッチョイ 4243-gDrC) 2024/11/20(水)22:54 ID:g9sD9hG/0(1) AAS
アホみたいなカスの嘘です
575
(1): (ワッチョイ 0e79-Yo0P) 2024/11/20(水)23:28 ID:KXgtJp1v0(1) AAS
演算子オーバーロードは定義のリスクや手間の割には結局自己満に完結する事が多くて、
しかも結局C++という小さな世界でしか通用しないから、他に楽しい事が沢山ある今の人は時間の無駄と考えるんじゃないかな
576: (ワッチョイ ff07-pOJn) 2024/11/20(水)23:48 ID:F7TNJyq/0(1) AAS
無理に使うもんではないな たまにすごく便利
577: (ワッチョイ 7b71-nj0J) 2024/11/21(木)00:20 ID:PQXYbgG+0(1) AAS
std::chronoの時間型なんかは良い例だよね

・clock - clock = duration (例. 13時 - 12時 = 1時間)
・clock + duration = clock (12時+1時間=13時)
・duration + duration = duration (1時間 + 1時間 = 2時間)
・clock + clock: 不可

こういう型表現もできるのは良い点
578: (ワッチョイ 4e8d-7yGp) 2024/11/21(木)01:22 ID:KgLYxoZg0(1) AAS
初見で単に整数で取り出すのに一苦労だけどな
型安全厨くささ感じる
579: (ワッチョイ 06cf-xZnB) 2024/11/21(木)08:22 ID:5MMZVDCg0(1) AAS
演算の組み合わせが多いユースケースで可読性を上げるためのものだろう。
少ないなら関数のままでも十分。そういう意味で std::chrono は微妙。
580: (JP 0H1e-hB9O) 2024/11/21(木)10:15 ID:F4Mnbej3H(1/2) AAS
>>575

あんた他人の受け売りだろ。fortran90にだって演算子オーバーロードあるのに
581: (JP 0H1e-hB9O) 2024/11/21(木)10:20 ID:F4Mnbej3H(2/2) AAS
>>571
随伴行列(共役転置行列)か? それは演算子オーバーロードじゃなくて普通の関数でいいだろ
582: (ワッチョイ 8ee1-jy16) 2024/11/21(木)19:11 ID:U8jioV5J0(1) AAS
いわゆる演算子オーバーロードのメリットは、中置記法が使えるということと、一部の人間が使い慣れている演算子の算数・数学的記法のメタファーが使えることくらいかね。

その代償として文章構造の曖昧さや(その対処のための)優先順位といった規則の複雑化が必要になるので、言語設計観点からはメリット小さいよなぁ。
可能ならば中置記法を捨てて全部後置記法に統一したいところ。
583: (ワッチョイ 5f01-P+OA) 2024/11/21(木)20:19 ID:i1qXvmQ+0(1/2) AAS
嫌だよ! PostScriptじゃあるまいしw
584: (ワッチョイ ef63-ihPV) 2024/11/21(木)22:03 ID:vge40qUE0(1) AAS
チョムスキーの言語生得説って数学記号(の文法)も説明し切ってたっけ;;;
個人的には数学記号をプログラミング言語の文法に含めるのは悪手に思える
全部言葉にすべき
585
(3): (ワッチョイ fb7c-rtho) 2024/11/21(木)22:32 ID:UrWSESvu0(1) AAS
そうだな
(8.0 * std::numbers::pi * G) / (c * c * c * c * mu0)よりも
divide(multiply(multiply(8.0, std::number::pi), G), multiply(c, multiply(c, multiply(c, multiply(c, mu0)))))の方がずっと分かりやすいもんな
586: (ワッチョイ 0e79-Yo0P) 2024/11/21(木)23:37 ID:w61o9EHy0(1) AAS
>>585
君どんくさいな
その括弧やカンマも排除するんだよ
587
(1): (ワッチョイ 5f01-P+OA) 2024/11/21(木)23:41 ID:i1qXvmQ+0(2/2) AAS
8.0 pi mul G mul c c mul c mul c mul mu0 mul div
588
(2): (ワッチョイ fb9c-jy16) 2024/11/22(金)12:04 ID:OZOUVDIp0(1) AAS
>>585
後置記法なら
(8.0 std::numbers::pi G)を掛ける
(c c c c mu0)を掛ける
割る
みたいな感じかな。
589: (ブーイモ MM02-fwvC) 2024/11/22(金)16:24 ID:prOH0XeSM(1) AAS
>>588
>>587
590
(1): (ワッチョイ 36e6-slOl) 2024/11/22(金)17:47 ID:ckHOQP240(1) AAS
ポーランドにでも移住しろ
591: (ワッチョイ 0e79-Yo0P) 2024/11/22(金)20:09 ID:YUhadtJk0(1/2) AAS
政治的発言でチョムスキーは晩節を汚したな
592: (ワッチョイ ef63-ihPV) 2024/11/22(金)23:05 ID:qWC0+5lZ0(1) AAS
絶対数に平方の係数の四倍を掛け、中間項の係数の平方を加え、同平方根をとって中間項の係数を引いてから、平方[の係数]の二倍で割ったものを出力せよ
593
(1): aser-fgki (JP 0H1e-hB9O) 2024/11/22(金)23:22 ID:TibAXEMeH(1/2) AAS
>>585は痛烈な皮肉を言った。>>590は昔、HPの電卓が採用していた逆ポーランド法を連想して「ポーランドに行け」と言った。深いわ、ここのスレ
594: (JP 0H1e-hB9O) 2024/11/22(金)23:31 ID:TibAXEMeH(2/2) AAS
怖ヒから、退散します。
595: (ワッチョイ 0e79-Yo0P) 2024/11/22(金)23:46 ID:YUhadtJk0(2/2) AAS
どんな記法でもメソッドチェーンできれば勝つる
596: (ワッチョイ ff9a-V0/I) 2024/11/24(日)06:44 ID:CW4G8jt70(1) AAS
昔Turbo C++とか使ってたなあ
597: (ワッチョイ f79c-0AJs) 2024/11/25(月)11:18 ID:mvnjDr0E0(1) AAS
>>593
それも算数を習っていて、記号の意味や結合の優先順位、()グループ化のトレーニングを受けている前提だろ。

中置記法ではなく前置記法のトレーニングを受けている想定なら
/(*(8.0, std::number::pi, G), *(c,c,c,c,mu0))
だし、日本語ベースの後置記法なら中置記法のような特別なトレーニング無しで>588ぐらいは使えるかと。
598: 青木康善 (アウアウウー Sa5b-8bf6) 2024/11/27(水)11:39 ID:cLo+/Enba(1) AAS
やっぱり、C++は、難しいんで、慣れてるjavaで音楽ソフトウェア作ります。皆さんの健闘を祈ります。best regard
599: (JP 0H4f-6m00) 2024/11/28(木)01:12 ID:aCNd/9ZkH(1) AAS
ちん逃げやがったな。俺も人のこと言えんけど。
600: (ワッチョイ bfcc-6m00) 2024/11/29(金)12:44 ID:IhkudQsu0(1/2) AAS
Javaの構文的美しさは素晴らしかったけど
他言語に引っ張られて汚れてしまった
それならC++のほうが良い
何でもできるから
601: (ワッチョイ bfcc-6m00) 2024/11/29(金)13:41 ID:IhkudQsu0(2/2) AAS
やりたいことが出来る言語と
やりたいことが出来ない言語
602: (ワッチョイ bf6c-6oxW) 2024/11/29(金)16:19 ID:xzsI3pih0(1) AAS
なんでもできるは他を知らないだけだろ
603: (ワッチョイ 5707-hCSs) 2024/11/29(金)17:33 ID:BYCpquOz0(1/2) AAS
一応、自分の技量と気力で、希望するわがままが通るかは、調べてみるけどね
604: (JP 0Hdf-/Vqe) 2024/11/29(金)18:57 ID:ZW4PTdY8H(1) AAS
BEアイコン:nida.gif
EchoAPIは私のVS Codeのセットアップに素晴らしい追加となり、APIテストがとても簡単になった
605: (ワッチョイ 7f7e-zwOW) 2024/11/29(金)22:11 ID:C48YuSW20(1) AAS
やりたいこと以外何でもできる言語
606: (ワッチョイ 5707-hCSs) 2024/11/29(金)23:01 ID:BYCpquOz0(2/2) AAS
やりたいことはできない。(サボりの)どうでもいいことはできる。ってほっとけww
607: (アウアウエー Sadf-wjfe) 2024/11/30(土)09:53 ID:l0dFcapba(1) AAS
x C++が難しい
o 頭が悪い
608: (ワッチョイ bfd9-6oxW) 2024/11/30(土)12:21 ID:tlb45efI0(1) AAS
c++が簡単ってまあ勘違いだろ
脱初級で全部わかった気になるやつ
個人的に尊敬してる人でも難しいと言ってる
609: 青木康善 (アウアウウー Sa5b-8bf6) 2024/11/30(土)13:56 ID:exhSsXMya(1) AAS
javaで、簡単なドラムマシン作りました。C++では、到底オツムが良く無い僕には無理です。皆さんの健闘を祈ります。
610
(1): (JP 0Hf2-Dj8N) 2024/12/01(日)18:28 ID:IuCKzQHfH(1/6) AAS
xxx.h で namespace A { size_t intval, count, itr; } を宣言。もちろん、インクルードガードしてる。

ところが、作ったライブラリをテンプレート対応に修正したら、「intval, count, itr」が2重定義されてます。」
という旨のLINK1169のエラー(Visual Stuio 2022)が突然出てきた。前のライブラリではこんなエラー出てなかった
のに...ナンデダロー、ナンデダロー♪と悩んでいたが、

namespace A { extern size_t intval, count, itr; }

を宣言したら解決した。extern_や外部リンケージのことがが良くわからない。調べたら通りいっぺんのことは
わかるけど。LINK1169のエラーが出たら、extern宣言してみてLINK1169を殺す、という対症療法だけ学習しました。
611: (JP 0Hf2-Dj8N) 2024/12/01(日)18:28 ID:IuCKzQHfH(2/6) AAS
くそ!また改行がめちゃくちゃ
612: (ワッチョイ 0e62-jXfH) 2024/12/01(日)18:31 ID:NWNsoufr0(1) AAS
MAPファイルの読み方を研究した方が良いかもな
613: (JP 0Hf2-Dj8N) 2024/12/01(日)18:32 ID:IuCKzQHfH(3/6) AAS
それに誤字だらけだし。オワタ。高齢者の認知症検査試験大丈夫かな。5年後だけど。
614: はちみつ餃子◆8X2XSCHEME (ワッチョイ bd32-mEgI) 2024/12/01(日)19:20 ID:rI1+OlKH0(1/2) AAS
>>610
定義はプログラム全体でひとつとする原則 (one definition rule) は診断不要な場合がある仕様になっていて処理系が問題を検出できなくてもかまわないことを意味する。
つまりエラーが出てなくても間違っている (未定義の挙動) かもしれないので理解せずにエラーメッセージに頼るのは悪い姿勢。
615
(2): (JP 0Hf2-Dj8N) 2024/12/01(日)19:34 ID:IuCKzQHfH(4/6) AAS
テンプレートにすると(implテクニックを使わなければ)、定義も実装も同じファイルに書かなければならないからそれが原因かなあ。とりあえず、厄介なLINKエラーは除霊されました。
616
(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ bd32-mEgI) 2024/12/01(日)20:25 ID:rI1+OlKH0(2/2) AAS
>>615
テンプレート内でグローバル変数にアクセスする箇所があるってこと?
それなら今はインライン変数を使うのが便利で行儀の良い作法のひとつだと考えられている。
インライン変数は C++17 からの機能なのでそれより古い規格しか使えないような事情があるなら仕方ないんだけど……
617: (JP 0Hf2-Dj8N) 2024/12/01(日)20:32 ID:IuCKzQHfH(5/6) AAS
>>616

ありがとうございます。調べてみます。
ちなみに、>>615 定義も実装も → 宣言も定義も ええいくそっ! まーた間違えた
618: (JP 0Hf2-Dj8N) 2024/12/01(日)21:38 ID:IuCKzQHfH(6/6) AAS
>>616

まーた、言い忘れました。まさにその状況でした。
619
(3): (JP 0Hf2-Dj8N) 2024/12/02(月)22:09 ID:/dQ47H+wH(1/2) AAS
[][]演算子のオーバーロードが欲しい。行列を1次元配列で実装する場合、C++は行主順(行列を行ベクトルの集まりとみなす)。Blas、lapackのライブラリをビルドしたfortran77は列主順(行列を列ベクトルの集まりとみなす)。()演算子のオーバーロードでは、行主順だろうが列主順だろうが、行列Aのi行j列の要素にはA(i,j)とアクセスできるが、列主順の場合には[]演算子のオーバーロードをどうやってもA[j][i]となってしまう。それでeigenは()演算子のみをサポートしている(本当か?)。だが、A(i,j)が添字0から始まるのが気に入らん。添字が0から始まるのはA[i][j]やろうもん。
[][]のオーバーロードがあったらなあ。
620: (ワッチョイ 00f0-X9QH) 2024/12/02(月)22:22 ID:7rlMEi700(1) AAS
propertyなら簡単に多次元配列扱えそうなのに
propertyいつになったら実装されるのやら
621: (ワッチョイ b701-5W+W) 2024/12/02(月)22:30 ID:6C6t/Sm50(1/2) AAS
>>619
O [][]演算子のオーバーロードが欲しい。
O 行列を1次元配列で実装する場合、C++は行主順(行列を行ベクトルの集まりとみなす)。
O Blas、lapackのライブラリをビルドしたfortran77は列主順(行列を列ベクトルの集まりとみなす)。
X ()演算子のオーバーロードでは、行主順だろうが列主順だろうが、行列Aのi行j列の要素にはA(i,j)とアクセスできるが、
X 列主順の場合には[]演算子のオーバーロードをどうやってもA[j][i]となってしまう。
O それでeigenは()演算子のみをサポートしている(本当か?)。
省4
622
(1): (JP 0Hf2-Dj8N) 2024/12/02(月)22:40 ID:/dQ47H+wH(2/2) AAS
ああ、そう。
ところで、A(i,j)が添字0から始まるのが気にならないんだ。じゃあ、もうええわ。
623: (ワッチョイ 0e62-jXfH) 2024/12/02(月)22:51 ID:Fo02P0Bv0(1) AAS
msvc4.xxにoprater delete[]をoverideする機能が無い
所からCOMの仕様が策定されている所を考えると
面白いな
624: (ワッチョイ b701-5W+W) 2024/12/02(月)22:58 ID:6C6t/Sm50(2/2) AAS
>>622
日本語の意味が分からんと書いている
0オフセットが嫌ならiやjから1引けば良かろうもん?
625
(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ bd32-mEgI) 2024/12/02(月)23:07 ID:5A4jg9rQ0(1/2) AAS
>>619
[] がカンマで区切られた複数の引数を受けとる機能は入る見込み。
そのための前準備として [] の中でカンマ演算子を使うのが C++20 から非推奨になってる。 必要なら括弧で囲めばいいだけだから深刻な互換性問題にもならんだろうし。

[][] をオーバロードするとなると辻褄合わせが難しいだろうから入ることは期待できないと思う。
626: はちみつ餃子◆8X2XSCHEME (ワッチョイ bd32-mEgI) 2024/12/02(月)23:09 ID:5A4jg9rQ0(2/2) AAS
>>625
あ、アンカーを間違えた。 >>619 にすべきだね。
すまぬ。
627: (ワッチョイ c89a-+Y4l) 2024/12/04(水)01:53 ID:DpkrBRqF0(1) AAS
結局はベクトルや行列の演算の何かなんだろうから
二重配列を直接操作するというよりベクトルや行列のオブジェクトの演算を
定義する、演算子オーバーロードする、とかそういうコードを一旦書くわけには
いかないのかな?
628: (オイコラミネオ MMdd-Qs+Z) 2024/12/04(水)11:10 ID:1b6O8ksjM(1) AAS
[][]演算子が出来たら
[][][]の解釈に困るからできない

というより
[]が一つの演算子だから[][]はないし混乱のもと
[ , ]が正当
629: (アウアウエー Sa6a-VZt9) 2024/12/05(木)20:29 ID:bsPx8jUja(1) AAS
pythonみたいにhoge[:,:,::-1]みたいな描き方したい
operatorオーバーロードの仕方教えてくれ
630: (ワッチョイ 847c-0Hkv) 2024/12/06(金)19:13 ID:Ed4tJtIh0(1) AAS
どうしてもやりたいならユーザー定義リテラル使ってhoge[":;:;::-1"_slice]とか書かせるかなあ
631
(1): (ワッチョイ 5e63-64DC) 2024/12/07(土)17:49 ID:hZoDLS6H0(1) AAS
[,]とカンマ演算子の優先順位はどうなるんじゃ……
まあすでに関数の引数部分で似たような状況((, , ,))だから良いのか……
632: はちみつ餃子◆8X2XSCHEME (ワッチョイ bd32-LsAq) 2024/12/07(土)19:05 ID:bmFGOE/o0(1) AAS
>>631
先述 (>>625) の通り [] 内での (丸括弧で囲まない形での) カンマの使用は C++20 から非推奨。
これは変更に対する布石で、 C++23 からカンマは引数の区切りのカンマとして解釈されることになった。
解釈が変わる (互換性が維持されない) 変更なのだが、大量の既存のコードを検証してそれが問題になるような使い方はほとんどない (あっても簡単に迂回できる) と判断された。
633: (ワッチョイ a7ad-7Ydj) 2024/12/08(日)19:55 ID:R/m6cDay0(1) AAS
mdspan でいいんじゃないかと
634
(1): 350 (ワッチョイ 9744-3FWJ) 2024/12/30(月)01:24 ID:QjoRUJvQ0(1/2) AAS
>>316
char name[] = "sazaesan";

これ配列リテラルちゃうの?
nameはポインタだが
dc エリアに sazaesan\0 格納されるだろ
635: (ワッチョイ b6e7-F611) 2024/12/30(月)02:23 ID:OlG90g3v0(1) AAS
その話はもうええわ
636: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9732-1Vfr) 2024/12/30(月)03:22 ID:vy8OYYFk0(1) AAS
>>634
> これ配列リテラルちゃうの?

文字列リテラルは配列の一種ではあるが、この場合は配列一般を表すリテラルはないという意味。
(C にはコンパウンドリテラルがあるし、一部の処理系では C++ でも使える拡張があるけど。)
初期化子に現れる波括弧が配列リテラルだと誤解しているらしいことについての指摘なので文字列リテラルも配列リテラルだというのは関係がない。

> nameはポインタだが

いいえ。 name は配列。
省2
637: (ワッチョイ 9744-3FWJ) 2024/12/30(月)08:13 ID:QjoRUJvQ0(2/2) AAS
>文字列リテラルは配列の一種ではあるが、この場合は配列一般を表すリテラルはないという意味。

おおっと苦しいねぇw
638
(1): (ワッチョイ 9a79-yyCf) 2024/12/31(火)23:26 ID:xpoxeW+N0(1) AAS
>配列リテラル
そもそもこの言葉がおかしい
配列リテラルなんてものは存在しない
リテラルは数値や文字、文字列の変更不可な定数を指す用語で、配列等の変数とは間逆の存在
配列は文字列リテラルとかで初期化はできるがリテラルには分類されない
主にjavascript界隈で平気で配列リテラルなんて説明してるサイトがあるが全部間違い
639
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 9732-1Vfr) 01/01(水)11:07 ID:KjvDobUm0(1) AAS
>>638
英単語としての literal の意味にそぐわなくても、言語仕様でリテラルという用語を割り当てられたならリテラルというしかない。
JavaScript (ECMAScript) のことはよう知らんけど仕様を見たら [] で囲んで配列を表現する文法には ArrayLiteral と書いてあるぞ。

外部リンク[html]:262.ecma-international.org
640: (ワッチョイ 8b01-rRgN) 01/01(水)11:14 ID:MMGltyx80(1) AAS
まぁ言葉の競合なんて稀によくあるし
641: 青木康善 (アウアウウー Sac7-DS50) 01/02(木)03:10 ID:2OQRwfH2a(1) AAS
独習C++今から読みます。
642: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9732-1Vfr) 01/02(木)12:45 ID:dC27qXct0(1/2) AAS
そうか。
643
(1): (ワッチョイ 9a79-yyCf) 01/02(木)17:05 ID:ZvjFvgyg0(1) AAS
>>639
そこ見たけどリテラルについては13.2.3 Literalsで定義されてるし
ArrayLiteralで検索したら13.2.4 Array Initializerと書いてあるから、ArrayLiteralはただの誤植だろ
そんなのを根拠にして配列リテラルなんておかしな説明が広まってるのか
644: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9732-mOud) 01/02(木)20:16 ID:dC27qXct0(2/2) AAS
どうだろ?
同じものでも切り口によって呼び名が違うことはあるじゃないの。
たとえば字句的には識別子と呼ばれてるものが構文の上では変数だったり型だったりするわけで。
本当になんの使い分けの意図もなく単なる間違いなんか?
いやまあ、私はよう知らんから本当に間違いなんかも知らんけど。
645: (ワッチョイ 9744-3FWJ) 01/03(金)05:19 ID:TELQMEJN0(1) AAS
>>643
だから
値による Initialize と Literal がどーちがうというんだ
何をこだわってるの?
646
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 9732-mOud) 01/03(金)08:22 ID:N2a/+7s70(1/2) AAS
用語は概念と結び付いてる。
理屈の建て付けが用語に現れているのだから用語の間違いは理屈の理解の誤り。
こだわるべき。

訳の都合とか歴史的事情でわかりにくい変な用語になってるのもよくあることだけどな。
647: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9732-mOud) 01/03(金)15:37 ID:N2a/+7s70(2/2) AAS
常に厳密であるべきとまでは言わないけど、必要なときに説明できる程度にはね。
648: (ワッチョイ 8b01-rRgN) 01/03(金)16:40 ID:nAACv6m40(1) AAS
せやな
649: (ワッチョイ 23ef-s7Wh) 01/04(土)19:25 ID:Dnxz33hn0(1) AAS
ECMAScript® 2024 Language Specification
A Grammar Summary
外部リンク[html]:tc39.es
より抜粋
| PrimaryExpression :
| Literal
| ArrayLiteral
省8
650: (ワッチョイ b62b-F611) 01/04(土)19:40 ID:tP/ja7AQ0(1) AAS
その話つまんないから
651: (ワッチョイ 9732-mOud) 01/04(土)19:51 ID:1P+FhTZO0(1) AAS
関西人が河童を追い払う古代遺跡、カッパドキヤ
652: (ワッチョイ dbc7-PiQp) 01/07(火)15:04 ID:njoKzNHl0(1) AAS
初心者が聞いたら間違いなく混乱するなこりゃ
普通リテラルってデータリソース「表現」のレベルでメタキャラと対な概念、って点をまず押さえるべきなんじゃないかと
Cならバックスラッシュがリテラルかメタキャラかはシングルクウォートで囲まれるかダブルクウォートで囲まれるかで変わる、みたいな感じで

あと表現と「実装」(配列orリストorタプルetc.)をごちゃ混ぜに議論してるのも良くない…気がする
JSでの用語用法に関しては正直どうでもいい他所でやれとしか
653: (ワッチョイ 9944-7f6o) 01/09(木)16:41 ID:G2VPgYgX0(1/2) AAS
>>646
こだわってるのはお前だけ
しかも値によるInitializeとLiteralは用語の間違いではなく同じものでしかない
寝言ほざくな
1-
あと 349 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.025s