[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/26 03:13 / Filesize : 247 KB / Number-of Response : 1023
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part146



1 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 11:35:36.76 ID:4wggfTwe.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part145
mevius.5ch.net/test/read.cgi/tech/1568362404/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
mevius.5ch.net/test/read.cgi/tech/1556142878/

■長いソースを貼るときはここへ。■
 codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)

245 名前: mailto:sage [2019/11/26(火) 21:15:26.74 ID:eitz3RWA.net]
>>231
ニュートン法(にゅーとんらぷそん)って、曲線で与えられる関数の根の一つを求める方法でしょ?
いわゆる実数の根を求める方法であって、整数の剰余を求めることはニュートン法では無理なのでは?

何がどうなって「当然」なんですか?

246 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:19:25.20 ID:78UVTJ0X.net]
除算が出来るんだから剰余も当然求められる

247 名前: mailto:sage [2019/11/26(火) 21:22:34.40 ID:eitz3RWA.net]
>>241
で、その剰余はどうやって求めるのですか?
まさか、求めた商に除数をかけて被除数から引くのですか?それって遅くないですか?

248 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:23:39.77 ID:78UVTJ0X.net]
遅くないです

249 名前: mailto:sage [2019/11/26(火) 21:25:15.97 ID:eitz3RWA.net]
>>243
本当ですか?わざわざ、あらためて掛け算をするんですよ?私には馬鹿みたいな方法にみえますが?

250 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:26:45.06 ID:78UVTJ0X.net]
馬鹿みたいな方法にみえるのはあなたが馬鹿だからです

251 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:29:07.44 ID:sE/nea3J.net]
>>242
ニュートン法なので、
z = b / a の z を求めたい場合、直線 y = a * x - b と x 軸(y=0) との交点の
x を求めることによって行う。その際、x0, x1, ・・・, xn のように x を
漸化的に交点に近づけて

252 名前:いく。数学的直感だと、その途中で剰余も求められ
るように出来そうな気がする。
[]
[ここ壊れてます]

253 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:43:45.68 ID:sE/nea3J.net]
>>246
色々なやり方はあると思うけど、2^m <= a < 2^(m+1) の場合、
x_{k+1} = x_k - (y_k << m);
y_{k+1} = a * x_{k+1} - b;
の漸化式でいけるかも知れない。
間違っていたらゴメンなさい。



254 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:44:43.61 ID:78UVTJ0X.net]
>>246
その方法で乗算の3倍の時間で除算が出来ますか?
無理ですよね?

255 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:49:53.94 ID:sE/nea3J.net]
>>248
漸化式が三回くらい行ったら正しい答えに到達するのであれば、
乗算の三倍程度の時間で済むと思う。
何回で到達するかは、まだ考えて無いのでわからない。

256 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:53:39.27 ID:sE/nea3J.net]
>>247
ここで、0<= y_k < x_k が満たされれば、x_k が商、y_k が余りだと思う。
初期条件は、
x_0 = 1;
y_0 = a * x_0 - b;
とすればよいはず。
途中、y_k が負の値になることが有るが、問題ない。

257 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:55:42.20 ID:78UVTJ0X.net]
前提は分母も分子も巨大な桁数で良いんだよね?

258 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:56:38.32 ID:78UVTJ0X.net]
分母の桁数があまり大きくないならテーラー展開も有効だよ

259 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:57:23.51 ID:sE/nea3J.net]
>>251
一般的な場合を取り扱うのであれば、その条件が、もっともらしいと思います。

260 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:57:37.73 ID:78UVTJ0X.net]
いずれにしろ、
除算命令を多用することは無い

261 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:58:41.68 ID:sE/nea3J.net]
ニュートン法を使うのは初めて聞きました。
とても勉強になります。

262 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:59:47.69 ID:78UVTJ0X.net]
>>253
それで漸化式3回なんてことはあり得ないかと

263 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:01:24.02 ID:sE/nea3J.net]
○<< m とせずに ○<< (m+1) としておけば、y_k は負の数にならないかも
知れない。ただ、数学的直感的に、収束速度は、前者の方が速い気がする。



264 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:03:05.27 ID:78UVTJ0X.net]
>>240
数年前にも「にゅーとんらぷそん」とか書いてた糞コテがいたんですが
もしかして本人?
文のレベルも頭の悪さもそれっぽい

265 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:07:18.12 ID:78UVTJ0X.net]
八木アンテナを八木宇田アンテナと書かないのと同程度に
ニュートンラプソン法とは書かないと思っているので
印象に残ってます

266 名前: mailto:sage [2019/11/26(火) 22:08:38.03 ID:eitz3RWA.net]
>>258
raphson の ph を摩擦音で読むか、有気破裂音で読むかは、選択可能かと思っていましたが

267 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:10:11.81 ID:sE/nea3J.net]
>>247
まず、シフトの向きが右で、正しくは、○>>○ でした。

268 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:16:30.64 ID:78UVTJ0X.net]
>>260
何を指摘されてるのかわかってないwww

269 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:19:47.56 ID:sE/nea3J.net]
>>256
では、BIT SHIFT ではなく、浮動小数点演算にして、以下の様にすれば速くなるかもしれません。

(i) 初期条件
η = 1/a;  // 多倍長の浮動小数点
x_0 = 1;
y_0 = a * x_0 - b;

(ii) 漸化式
x_{k+1} = x_k - (int_N)(y_k * η);
y_{k+1} = a * x_{k+1} - b;

但し、int_N は、多倍長の浮動小数点を多倍長整数に直す cast。

270 名前:デフォルトの名無しさん [2019/11/26(火) 22:34:50.59 ID:FauhtWma.net]
#include <iostream>
using namespace std;

int main() {
string str = "abc";
cout << &str << endl;
cout << str << endl;
cout << str.c_str() << endl;
return 0;
}

VisualStudio2019のdebugとreleaseとで&strのメモリダンプ内容が異なるのはなぜでしょうか?
debug : 78 f7 b6 00 61 62 63 00
release : 61 62 63 00

271 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:34:54.21 ID:78UVTJ0X.net]
1/a が求まれば
あとは乗算2回(と軽い演算)で剰余が求まるでしょ
漸化式にするまでもなく

272 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:36:37.97 ID:78UVTJ0X.net]
>>264
デバッグ情報とか破壊検出用データとかじゃ?

273 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:37:41.67 ID:sE/nea3J.net]
>>265
細部までは分かりませんが、直感でなんとなく分かります。
aが32BITの場合なら、一度にほぼ、32BIT分計算が終わる気がします。



274 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:42:23.06 ID:FauhtWma.net]
>>266
ありがとうございます。
ということはdebug版の呼び出し元(exe)とrelease版の呼び出し先(dll)
間ではstring型を関数の引数にするとバグりますね。

275 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:44:29.12 ID:78UVTJ0X.net]
>>267
>>251の前提はどこに?

276 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:45:06.01 ID:sE/nea3J.net]
>>268
そうなりますね。
malloc() や new なども、Debug 版と Release 版ではライブラリに互換性が
有りません。Debug 版では、まさに、破壊検出用の埋め草のような物が入っていたり、
new を行った行番号情報が入っていたりします。

277 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:46:50.29 ID:FauhtWma.net]
>>270
多謝!!!
しりませんでした。

278 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:49:29.81 ID:sE/nea3J.net]
>>269
私は特に仮定はしていませんが、四倍浮動小数点型などに興味があり、
それを整数演算に置き換えて実装してみようかと思っていたりするので、
割る数も割られる数も同じくらいのBIT数の整数の場合に興味があります。

前に調べたところ、倍精度浮動小数点演算を用いて、四倍精度浮動小数点
の乗算、除算まで実装する方法があるようですね。ただし、その場合、
Intelの内部拡張倍精度(80BIT)方式をONにしていると駄目なんだそうですが。

279 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:57:18.80 ID:78UVTJ0X.net]
>>272
4倍弱精度なら
Haswell以降で使えるFMA命令がとても約に立ちます

280 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:58:49.33 ID:YRq1zw3m.net]
>>264
こっちで試した限りだと、debugとreleaseでコンソール表示の長さは変わらんかったぞ
x86とx64なら差が出たが

281 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:59:27.13 ID:sE/nea3J.net]
>>265
aがN BIT の場合、例えば、1/a を、64BIT 程度で求めた場合は、
(N / 64) (回) 程度の乗算が必要になりそうです。
1/a を高速に N BIT まで求めるアルゴリズムがありますでしょうか?

282 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:59:32.53 ID:78UVTJ0X.net]
それ以前の普通の乗算でも出来るけど

AVXでSIMD化出来るのでたくさん計算するならぜひ

283 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:01:27.32 ID:sE/nea3J.net]
>>273
興味深いです。教えていただければ幸いです。



284 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:02:58.56 ID:YRq1zw3m.net]
>>274
メモリダンプという言葉をみおとしていた
スレ汚しすまぬ

285 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:05:02.93 ID:78UVTJ0X.net]
>>275
私が何度か除算は乗算の3倍の時間と書いたのは
例えば100万桁同士の除算は100万桁同士の乗算の3倍な時間という意味
乗算命令の回数ではなくて

aが100万桁で1/aを100万桁精度で求めるのは
100万桁同士の乗算の2倍くらいの時間で出来る

286 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:10:41.35 ID:sE/nea3J.net]
例えば、割り算部分をテーラー展開ですか。

287 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:17:37.02 ID:78UVTJ0X.net]
>>277
{a_hi, a_lo} と {b_hi, b_lo} の乗算で
a_hi * b_hi を求めてから、
本当の a_hi * b_hi との誤差を求めるところ

c_hi = a_hi * b_hi とやってから
a_hi * b_hi - c_hi
をFMAでやれば誤差が簡単に求まる

288 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:19:37.46 ID:78UVTJ0X.net]
fusedな3個の足し算命令とかもあると
加減算も簡単になるんだけど
そんな命令は(他のCPU含めて)見たことがない

289 名前:デフォルトの名無しさん mailto:sasge [2019/11/26(火) 23:24:07.48 ID:sE/nea3J.net]
a=1+q の時:
y/a=y/(1+q)
=y*{1 - q + q^2 - q^3 + ... }
=y*(1-q*(1-q*(1-q...))}

290 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:30:51.74 ID:sE/nea3J.net]
>>283
この式は、|q|<1の場合にだけ正しいので、
aをa=u*2^n (u = 1.0 + q)の形式に直してから
1/a = 1/(u*2^n)=1/(1+q)*2^(-n)
  = (1-q*(1-q*(1-q...)))*2^(-n)
とするのですかね。
なるほど、qの精度を考えれば、乗算の回数は2個くらいまで
で済みそうですね。

291 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:36:41.80 ID:sE/nea3J.net]
>>284
すみません、これだと二回では精度が足りなさそうですね。

292 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:37:21.85 ID:78UVTJ0X.net]
多倍長の1/aの話なら
テーラー展開は遅すぎて使いませんよ

4倍弱精度の話であれば
除算命令やテーラー展開は使いますが

どれの話をしてるのかわかるようにかいてくれませんか?

>>238 の通りなので

293 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:49:53.60 ID:sE/nea3J.net]
>>286
多倍長の 1/a はどうやって求めたら効率が良いのでしょうか?



294 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:53:50.60 ID:78UVTJ0X.net]
>>228

295 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 00:00:48.09 ID:T7KqQ5kC.net]
>>288
もしかすると、
y = 1/(a*x) - 1

y = 0
の交点をニュートン法で求めるのでしょうか。

296 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 00:02:25.36 ID:T7KqQ5kC.net]
>>289
すみません、違いますね。

297 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 00:27:57.72 ID:tKRTExPe.net]
初歩的な質問ですみません
2つのdouble型実数xとyを引数とし、x/yとy/xの大きい方を返却する関数を作成せよ。xあるいはyのときは0を返却するとする。という問題でコード書いてみたんですがうまくいきません どこが間違っているのでしょうか

#include<stdio.h>
double func(double,double); /*プロトタイプ宣言*/

int main(void)
{
double a,b;
printf("実数をスペースで区切って入力してください\n");
scanf("%d %d",&a,&b);
printf("%d",func(a,b)); /*呼び出し*/
return 0;
}

double func(double x,double y)
{
if(x/y > y/x) return x/y;
if(y/x > x/y) return y/x;
if(x==0) return 0;
if(y==0) return 0;
}

298 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 00:33:48.17 ID:ynQDuheL.net]
%dのところがおかしい
それは整数用

299 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 00:42:47.79 ID:tKRTExPe.net]
ありがとうございます 1時間くらい悩んでたのが馬鹿みたいだ

300 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 00:53:21 ID:ynQDuheL.net]
入力に0を含めてテストするように

301 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 01:11:14 ID:tKRTExPe.net]
ifの順番変えたら完成しました

302 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 02:13:53.15 ID:XGkmLsxS.net]
QZは馬鹿

303 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 02:41:24 ID:Q9FMbuzn.net]
xとyが等しいケースは書いたんじゃろうか



304 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 11:43:48.59 ID:g3LmaZYt.net]
世にある仕事の数でいうと
java:C#:C++が5:3:1くらいだな。

305 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 12:16:41.56 ID:zdI/1sLa.net]
このスレ過疎かと思ったら話題でた途端に加速するな

306 名前:デフォルトの名無しさん [2019/11/27(水) 13:47:03 ID:KtqS+hCI.net]
const は要らない子

307 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 14:58:41.90 ID:vSkP4LPU.net]
本当はね・・・constの逆が欲しいのさ
デフォが書き込み禁止で許可を明示だったらと

キャプチャのmutableみたいな

308 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 15:05:41.36 ID:Yu9S3/3Y.net]
めんどくさいだけ

309 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 15:08:54.83 ID:lAIqGT0K.net]
Pointという点を表すクラスがあって、2点間の距離を取得する関数を追加したいのですが、
double Point::GetDistance(const Point &p) const
にすべきか、ただのCの関数で
double GetDistance(const Point &p1, const Point &p2)
にしたほうがいいのか迷っています。
設計的にいいのはどっちなんでしょうか?

310 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 15:13:19.55 ID:zdI/1sLa.net]
>>303

Pointに必要以上の機能を作らない

311 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 15:32:27 ID:FMRbYBnJ.net]
下に1票。同じ理由

312 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 15:33:34 ID:vYtjQlD0.net]
下だな
なんでもかんでもインスタンスに生やすのは厨臭くてダサいし、対称な操作は対象に見えるべき

313 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 15:34:48 ID:lAIqGT0K.net]
>>304
ありがとうございます。
ですよね。前者の考えでいくと、いくらでもメンバ関数が増えそうな気がしていました。



314 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 15:43:43.07 ID:PahKH909.net]
下の方が、スカラー値等の既存型や配列向けの特殊化をし易いメリットもあるかもねー

315 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 15:55:14.01 ID:xImtWZAs.net]
ベクトルの引き算を定義してやるのはありでは

316 名前:デフォルトの名無しさん [2019/11/27(水) 16:11:06 ID:KtqS+hCI.net]
下を造っておいて
operator - で下のを利用 >>309 と同じ
どちらも inline

317 名前:デフォルトの名無しさん [2019/11/27(水) 16:12:16 ID:KtqS+hCI.net]
ああ同じではないわ
ベクトルの引き算はスカラーじゃなくてベクトル
ベクトルの絶対値を定義する

318 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 16:29:07.34 ID:MN5dlGGA.net]
abs(a-b)

319 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 18:11:30.16 ID:p98u22dC.net]
ベクトルの加減算や符号は紛れが無いのでオペレータで実装

乗算は内積、外積と要素ごとの積の3種類あるので
関数にする

3次元ベクトルも作る可能性があるなら
2次元ベクトルだとわかる名前にしておく
可能性が無いならそのままで

絶対値やノルム、象限などをグローバルにするかメンバ関数にするかは一長一短
設計ポリシー次第

320 名前: mailto:sage [2019/11/27(水) 19:16:22.98 ID:N9ggbkQ1.net]
>>303
私も下
>double GetDistance(const Point &p1, const Point &p2)
を friend 関数にします、大事にするのは対照であること、です

321 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 19:21:07.28 ID:fyVQDs9d.net]
>>187
メモリフラグメントを起こさないようにわざわざメモリプール切ってるのに
new/delete繰り返すオマエみたいなアホがいるからまともな製品ができねぇんだろww

322 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 19:29:28.78 ID:vSkP4LPU.net]
>>315
ほーう?
メモリプールでフラグメントが防げるのかww

323 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 19:31:20.95 ID:nSz8Pwyp.net]
>>314
オペレータだとメンバ関数な実装多いよね
なんでだろう



324 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 19:40:34.02 ID:nSz8Pwyp.net]
RTOSを使うような小規模環境だと
ヒープをしなかったりアロケートのみにしたりする
そんな環境でもC++は便利なので使えるなら使いたい

325 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 19:40:48.50 ID:nSz8Pwyp.net]
ヒープを搭載しなかったり

326 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 19:48:12.34 ID:nSz8Pwyp.net]
OSレスでもC++が使えるなら使う
実際それで製品出した

327 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 19:52:22.88 ID:q8B3tEUN.net]
対称が大事なのって、交換法則が成り立つ計算だから?

328 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 19:54:03.88 ID:nSz8Pwyp.net]
引き算の立場は?

329 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 19:57:18.53 ID:nSz8Pwyp.net]
主役がはっきりしてる場合はメンバ
同等な重要度の時は非メンバ

私の場合はだいたいこんな感じ

330 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 19:58:30.31 ID:nSz8Pwyp.net]
対称かどうかはあまり関係ない

331 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 20:25:32.56 ID:vYtjQlD0.net]
対称性が特に問題になるのはオペランドの型が異なるケースだな
対称な演算a.op(b)をaのクラスに実装したらbのクラスにも同じものをコピペするのか?
C#の演算子オーバーロードがstaticなのはそのへんが理由だとか
Pythonなどのスクリプト言語では基本的にインスタンスメソッドとして演算子を実装するけど、
それは動的型故に事前に実装を解決できないからだね

332 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 20:29:53.87 ID:EGeQZX97.net]
>>317
かつて非メンバ関数のオペレータを名前空間の外から呼び出そうとするととても残念な気持ちになるからじゃね

333 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 20:44:42.44 ID:0U9h+SK3.net]
オペレータオーバーロードを使うとカッコイイ気分にひたれるからだろ
それ以外の理由なんてあるのか?



334 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 20:45:44.57 ID:E2H9effp.net]
private変数の書き換えを伴うものだけメンバだな
Pointが座標値しか持ってないようなのならコンストラクタ以外は持たせない

335 名前:デフォルトの名無しさん mailto:sage [2019/11/28(Thu) 01:38:08 ID:PoPpbfsh.net]
代入は普通メンバだろ

=
+=
-=
*=
/=

[ ]も

336 名前:デフォルトの名無しさん mailto:sage [2019/11/28(Thu) 01:44:12 ID:PoPpbfsh.net]
当然符号も

337 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2019/11/28(Thu) 02:14:28 ID:+45JwpRI.net]
>>303
これは後者が良い場合が多い。
型変換の対称性が絡むんだよ。

たとえば std::tuple<double, double> から Point への変換コンストラクタが用意されているようなとき、
メンバ関数として実装されていると左辺ではこの型変換が考慮されず、右辺では考慮されるということになる。

338 名前:デフォルトの名無しさん mailto:sage [2019/11/28(木) 02:50:39.48 ID:4GnG2KNj.net]
>>329
代入系と添字はそもそもメンバとしてしか書けない

339 名前:デフォルトの名無しさん mailto:sage [2019/11/28(木) 06:43:27.57 ID:PoPpbfsh.net]
>>332
>>328に言って

>>331
対称性は関係ないって
Point * double
だって型変換された方が都合が良いなら非メンバだろうに

340 名前:デフォルトの名無しさん mailto:sage [2019/11/28(木) 08:02:30.92 ID:A3g54Di2.net]
>>316
ほーう?
そんなことすら知らないのかww

341 名前:デフォルトの名無しさん mailto:sage [2019/11/28(木) 08:09:05.07 ID:YpOyjZW5.net]
>>334
ハッタリしかできることねえようだな
まあ、そうだろう

342 名前:デフォルトの名無しさん mailto:sage [2019/11/28(木) 08:20:32.24 ID:PoPpbfsh.net]
フラグメントが問題になるならアロケート専用で解放出来ないようにするとかそもそもアロケート出来ないようにするとか
固定サイズを頻繁になら独立させておけばフラグメントしない

343 名前:デフォルトの名無しさん mailto:sage [2019/11/28(木) 08:21:42.93 ID:PoPpbfsh.net]
ヒープはヒープで1個の研究分野になるくらい
いろんな技術、方法がある



344 名前:はちみつ餃子 mailto:sage [2019/11/28(木) 17:46:42.56 ID:+45JwpRI.net]
>>333
???
理解できないのでもうちょっとくやしく

345 名前:デフォルトの名無しさん mailto:sage [2019/11/28(木) 18:11:40.54 ID:PoPpbfsh.net]
>>338
今回たまたま対称であったというだけで
対称性が理由じゃないってこと

ベクトル※ベクトル
ベクトル※スカラー
ベクトル※行列
ベクトル※矩形

なんであれ型変換された方が良いなら非メンバ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<247KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef