C++相談室 part131 at TECH
[2ch|▼Menu]
[前50を表示]
250:デフォルトの名無しさん
17/08/22 23:37:39.41 CYQ4BtpJ0.net
はいはい属性の抽象化属性の抽象化

251:デフォルトの名無しさん
17/08/22 23:39:19.18 CYQ4BtpJ0.net
>>245
0回

252:デフォルトの名無しさん
17/08/22 23:41:09.40 +MsUtw+Or.net
残念
0回または1回
因みに確認のためにムーブコンストラクターを追加すると0回に変わる

253:デフォルトの名無しさん
17/08/22 23:49:21.67 +MsUtw+Or.net
ということで、見た目で判断することは難しいのではないかと

254:デフォルトの名無しさん
17/08/23 00:09:19.34 CuDbJhab0.net
つかお前ら他言語使ってないだろ。
逆に言えばC++はその程度の精度での見積もりが出来る、ということなんだよ。
GC言語なんてGCがどこで走るか予測不能だから、実行時間の保証なんて全く出来ないし、
JIT言語はJIT側にその最適化が入っているかどうかで全く速度が変わってしまう。
つまりJava/C#/JavaScript等はその精度での見積もりはそもそも不可能なんだよ。
それとは別に、C++はその辺の仕組みがかなり複雑になっているのは認めるが、
それでも他言語と比べたら精度高く見積もれる方だよ。
getterを使った場合の問題は、それが見積もりにくくなることと、
あまりに多用するとどこで処理しているのか分かりにくくなる点だが、
まあ、適切に使っている限りはかなり使える機能だから、有った方が便利なんだけどね。
だから普通に考えれば「貪欲」なら当然入れるべきだし、
むしろラムダより先に入れるべきだが、入れないんだから何か引っかかってんでしょ多分。

255:デフォルトの名無しさん
17/08/23 00:16:20.92 Cw77BvbJ0.net
>>248


256:はちみつ餃子
17/08/23 02:11:33.58 wuLlGfOo0.net
getter がただの変数アクセスに被せてあるだけならまともなコンパイラなら最適化で消えるから速度的なペナルティはゼロだよ。

257:デフォルトの名無しさん
17/08/23 07:57:53.52 KTb6BBkr0.net
a = 1;
こんなコード片で、aの型がプリミティブ型かconstr(int)/operator=(int)を持つクラスなのかによって
実際に実行される処理内容が違う時点で
>軽い処理(public変数)なのか重いかもしれない処理(関数呼び出し)なのか、
>見た目分かるようにしろってのがC++の流儀なんだろ。
そんなものないとわかるだろう。
それににしても、そこからGCのオーバーヘッドに話が


258:飛ぶのはさすがにアクロバティックすぎるw 実実行時間の話なら、マルチスレッドの非リアルタイムOS上のプログラムはどれも正確な見積もりなどできん。



259:デフォルトの名無しさん
17/08/23 08:29:43.04 kvkWqUxa0.net
プリミティブ型? ああJava訛りね、C++用語はISO/IEC14882:2011 3.9.1に規定あるから
a = 1; がビルトインの代入か、トリビアルのoperator=か、
ユーザー定義のoperator=か、コンストラクタを呼び出すか、
コピーかムーブか、読めない人はC++には向いてないので無理しなくていいよ
要するにアセンブラ苦手なんだろ
マルチスレッドでもタイムクリティカルとか割り込みマスクとかあるしね
別にRTOSに限ったことじゃなく

260:デフォルトの名無しさん
17/08/23 11:11:46.28 KtaXakwM0.net
>>254
オメーは何が言いてえんだw
無意味に反論するんじゃねえよ
だからアホだって言われるんだよ

261:デフォルトの名無しさん
17/08/23 12:25:37.91 kvkWqUxa0.net
C++を批判するには
おまえ足んねーものが
多すぎつってんだよ

262:デフォルトの名無しさん
17/08/23 18:58:23.34 HlA0mWJs0.net
C++ 標準委員会のドワンゴ江添は、職務質問の手荷物検査を拒否したら、
警官10人に、現場で1時間半以上、拘束されたらしい
捜査でもない、任意の行政処分なのにw
それで東京都を訴えた

263:デフォルトの名無しさん
17/08/23 19:16:52.69 Rd2CDMDCM.net
>>254
> a = 1; がビルトインの代入か、トリビアルのoperator=か、
> ユーザー定義のoperator=か、コンストラクタを呼び出すか、
> コピーかムーブか、読めない人
それがわかったからと言ってなんになるんだ?
定義が常に読めるとは限らんだろ
> 要するにアセンブラ苦手なんだろ
逆アセしてでも読めとか言ってるなら単なる老害のアホ

264:デフォルトの名無しさん
17/08/23 22:25:37.71 kvkWqUxa0.net
>>258
ほーお、おまえさんは定義が読めないと判断できないのか
普通の人は宣言まで読めれば判断できるんだがw
逆汗読まないほうがバカガキ
バカガキからみて普通の人は老害というだけ

265:はちみつ餃子
17/08/24 00:52:21.94 MQSUCcmg0.net
そうか。

266:デフォルトの名無しさん
17/08/24 07:16:54.28 uGClSq1gM.net
老害だと思ってたら基地害だったと言うオチかよ w

267:デフォルトの名無しさん
17/08/24 07:27:59.03 kJk0ElnZ0.net
熱いなプロパティ
はやく標準化されればいいのに

268:デフォルトの名無しさん
17/08/24 10:04:23.28 VdsYrxcW0.net
いらね

269:デフォルトの名無しさん
17/08/24 11:04:12.57 h3Bt5TkH0.net
プロパティじゃないと出来ないことってなになの

270:デフォルトの名無しさん
17/08/24 11:21:59.10 ItTZCijS0.net
見た目だけじゃね?

271:デフォルトの名無しさん
17/08/24 11:45:56.43 VdsYrxcW0.net
IDEがやれば済むこと
わざわざ言語に入れる必要なし!

272:デフォルトの名無しさん
17/08/24 12:19:36.07 TzTK1OIfM.net
メンバ変数と関数の呼び出し統一化。
いらんというのは同意。

273:デフォルトの名無しさん
17/08/24 14:05:25.76 5zDLSTW70.net
オブジェクトの状態と操作の区別
関数でも代用できてしまうけど、変数のように扱えるってのが大きい
変数のような使い方で処理を挟める、これはPublicなメンバ変数では出来ない

274:デフォルトの名無しさん
17/08/24 14:20:51.13 VdsYrxcW0.net
できるよバーカ
C++98より前、ARM C++の時代から

275:デフォルトの名無しさん
17/08/24 17:42:35.34 hLrI3YRl0.net
たしかに、operator()とoperator=があればできそうではある

276:デフォルトの名無しさん
17/08/24 18:28:45.68 dK94ZXMf0.net
>>269
どうやって?コードよろ

277:デフォルトの名無しさん
17/08/24 18:48:22.87 hLrI3YRl0.net
ARMだとテンプレート


278:ネいから、メンバ変数にしたい型ごとにラッパークラス作らないいけないから大変そう



279:デフォルトの名無しさん
17/08/24 18:52:57.63 4nWMkj3x0.net
質問ですが
std::string str("abcdefghi"); // (*1)
str.resize(8); // (*2)
size_t len = strlen(str.c_str()); // <-- "abcdefgh\0"の長さが返る (*3)
となるのですが、(*3)の時点でできる終端NUL文字"\0"って、
いつのタイミングでどこの領域に確保されるのですか、

280:デフォルトの名無しさん
17/08/24 18:54:42.67 4nWMkj3x0.net
訂正
×:、(*3)の時点でできる
○:、(*3)の時点でできている

281:デフォルトの名無しさん
17/08/24 19:23:39.06 hLrI3YRl0.net
ARMテンプレートあったわ。失礼

282:デフォルトの名無しさん
17/08/24 20:00:39.22 kJk0ElnZ0.net
>>270
そのスマートオブジェクトをメンバ変数にした場合、一々親へのポインタをそのスマートオブジェクトに記憶してやらんといけないからすごく面倒なのだよ
プロパティはその点何の束縛もないから良いのだ

283:デフォルトの名無しさん
17/08/24 20:11:18.34 VdsYrxcW0.net
>>272
アフォwww
template と try catch それと typeid はARMで新設されたんだよ
おまえ多重継承だけだと思ってんだろ

284:デフォルトの名無しさん
17/08/24 20:14:15.85 G5OnAPYO0.net
>>273
*1の時点であるよ

285:デフォルトの名無しさん
17/08/24 20:17:27.08 LSCbdyW40.net
>>273
(*2)の時点で 'i' があった場所に置かれる、
と素朴に思ってた

286:デフォルトの名無しさん
17/08/24 20:39:47.98 oFKMCsHnd.net
🐒

287:デフォルトの名無しさん
17/08/24 21:28:30.26 YTCHjYE8M.net
>>273
(*2) の時点で新規領域に abcdefgh をコピーしてその後に \0 を置く

288:デフォルトの名無しさん
17/08/24 21:29:59.02 G5OnAPYO0.net
新規領域もコピーもないでしょ

289:デフォルトの名無しさん
17/08/24 21:33:49.00 4nWMkj3x0.net
コピーが生じないんだとしたら、
std::string::size()はいつも1バイトだけサバを読んだ値を返すってこと?

290:デフォルトの名無しさん
17/08/24 21:34:29.37 G5OnAPYO0.net
せやで

291:デフォルトの名無しさん
17/08/24 21:35:38.05 4nWMkj3x0.net
なのか

292:270
17/08/24 22:02:35.81 oFKMCsHnd.net
プロパティはこれじゃアカンの?
URLリンク(wandbox.org)

293:デフォルトの名無しさん
17/08/24 22:12:47.64 4nWMkj3x0.net
Windows Phoneの開発で使うC++/CXにはpropertyが構文でサポートされているで
ていうかpropertyがあることが存在意義な感じ?(ネイティブなC++は別にあってそれはそれで利用可能

294:デフォルトの名無しさん
17/08/24 22:15:25.24 4nWMkj3x0.net
データメンバ直アクセスでなくてpropertyにすると良いことがあるというのは
マーシャリングを裏で勝手にやって来る点

295:デフォルトの名無しさん
17/08/24 22:28:47.63 TzTK1OIfM.net
メンバ関数でいいじゃん。ということだろ。

296:デフォルトの名無しさん
17/08/24 22:34:36.32 4nWMkj3x0.net
  |
  | ('A`) .oO(名前考えるのマンドクセ
 / ̄ノ( ヘヘ ̄ ̄ ̄


297:デフォルトの名無しさん
17/08/24 22:54:26.67 TzTK1OIfM.net
0変数:getter, 1変数:setter, 尻尾付き:メンバ変数
とかは良くやるな

298:デフォルトの名無しさん
17/08/25 00:06:28.73 w8QRZZ7K0.net
>>287
それ以前のVC++/CLIからサポートされてる。
>>286
駄目。
propertyは新規機能ではなく、見た目だけの問題だから、
逆に言えば、見た目がpropertyで書いた時より分かりにくいようなら駄目なんだ。
ほぼ同じ事はラムダとファンクタでもそうだけど。

299:デフォルトの名無しさん
17/08/25 00:10:22.03 hVYhQQjP0.net
>>268
オペレーターのオーバーライドとにたような感じになると思うけど、その挟み込む処理の重さが隠蔽されてしまうという問題があって、一般には、非推奨だとおもうのだけど今はかわってきてるのかね?
たとえば、代入しているだけだとおもったら、実


300:はファイルアクセスまでしてたとかかな。



301:デフォルトの名無しさん
17/08/25 00:19:32.01 4dE2HuPo0.net
>>293
>258理論によれば、老害じゃなければ一目で処理の重さがわかるんじゃね
もっとも処理の重さに関するC++の不透明さに警戒を抱くことを老害とするならば、
カーニハンやリッチーも老害にカテゴライズされてしまうが

302:デフォルトの名無しさん
17/08/25 00:49:30.90 w8QRZZ7K0.net
>>294
K&Rというか生Cが嫌っている理由は「余計なことをするな」だ。
適切に使っている限りC++は不透明ではない。それでも彼等は嫌うだろ。
>>293
横だが結局は使い方次第だよ。C++はいくらでも読みにくいコードを書けるから。
ただ、きちんと使えば有用な機能だよ。
演算子オーバーロードについてはgoogleは「慎重にやれ」だね。
URLリンク(ttsuki.github.io)
どうでもいいが、何故演算子は「オーバーロード」なんだ?
言われてみれば「オーバーライド」の方が適切な気がする。

303:デフォルトの名無しさん
17/08/25 02:45:57.11 g+9HiqWa0.net
>>293
それは言語機能の問題じゃなく実装の問題じゃない?
propertyってメンバ変数がどうなっているかに関わらずオブジェクトの状態を表すもの
言語機能の話をしているのであって
既存の機能をやりくりして似たことは出来るって言われてもって感じ

304:デフォルトの名無しさん
17/08/25 04:18:10.56 4FaT6XJy0.net
「処理の重さを隠蔽するな」なんて思想がそもそもあるのかね?

305:デフォルトの名無しさん
17/08/25 05:23:39.04 RGmsOxnq0.net
>>295
オーバーロードは新設で、たいていのoperatorがこっち
オーバーライドは変更で、代入やnewが本当はこっち

306:デフォルトの名無しさん
17/08/25 06:02:53.19 sj2/Y28y0.net
property ってパブリック変数とどう違うの?

307:デフォルトの名無しさん
17/08/25 06:53:00.86 s9vD7wq8M.net
>>294
> >258理論によれば、老害じゃなければ一目で処理の重さがわかるんじゃね
どこにも「わかる」って書いてないのにどんなアホ解釈したらそんな結論になるんだよ w

308:デフォルトの名無しさん
17/08/25 06:55:30.90 s9vD7wq8M.net
>>295
> どうでもいいが、何故演算子は「オーバーロード」なんだ?
> 言われてみれば「オーバーライド」の方が適切な気がする。
オーバーロードとオーバーライドの違いもわかってないの?
まあ>>298も色々おかしいが

309:デフォルトの名無しさん
17/08/25 07:02:27.63 g3SOHHgl0.net
オーバーロードってモモンガ

310:デフォルトの名無しさん
17/08/25 07:24:58.66 crVCqQ4J0.net
URLリンク(ideone.com)
URLリンク(qiita.com)
なんか通った。プロパティですよ?
こんなかんじでいいのかな?
何で動いてるのかよくわからん。Orz

311:デフォルトの名無しさん
17/08/25 07:49:18.88 4dE2HuPo0.net
>>300
>>254>>258の流れをa=1;の実行速度が一目見てわかるのかどうかという問題提起の意味に解釈すた、
パフォーマンスを読みきるには何の言語であれボトルネック(ループ回数×1回の実行時間が最大の処理)の特定が必要だが
C++は演算子のオーバーロードとかインライン展開とかテンプレートがそれ以前の障害として立ちはだかる点がCより重症
パフォーマンスを上げるための手段を豊富に提供してプログラムを書く人の選択に委ねているみたいな?
つまりC++はソースコードのROM専はお断りな言語
>>295
スマン言いたかったのはK&Rではなくてカーニハンとロブ・パイクやったorz
『プログラミング作法』の第7章「性能」のところにC++の特性について(CやJavaとの比較が)


312:書かれていた希ガス、 (目次)ttps://tatsu-zine.com/books/practice-of-programming ちな本は売ったから手元に無い >>297 本来のK&Rがまさにそれなのでは… Unixの移植目的で作られた言語なので、移植性と意図通りのアセンブリコードに落ちること (ソースコードからアセンブリコードが透けて見えること)の両立が着手時点の第一優先だったはず 故に生ポインタが言語の前面に出てきてインクリメント/デクリメントがそれぞれ2種類あった



313:デフォルトの名無しさん
17/08/25 08:42:44.14 XasQqnRJ0.net
>>298
いや、new もオーバーロードでしょ。

314:デフォルトの名無しさん
17/08/25 08:51:39.36 crVCqQ4J0.net
newはオペレーターじゃないの?

315:デフォルトの名無しさん
17/08/25 08:53:26.21 mWX/padLd.net
いやいや、newは新しいって意味

316:デフォルトの名無しさん
17/08/25 09:08:17.73 crVCqQ4J0.net
新しくメモリのようなものを持って来るってことでしょ。
言語上ではオペレーターじゃないの?

317:デフォルトの名無しさん
17/08/25 09:09:11.80 mWX/padLd.net
オペレーターかどうかの議論なんて誰もしてない

318:デフォルトの名無しさん
17/08/25 09:11:08.77 crVCqQ4J0.net
オペレータはオーバーロードするもんじゃね?
まぁいいか。

319:デフォルトの名無しさん
17/08/25 09:52:04.11 RGmsOxnq0.net
>>305
「本当は」って書いてるだろ
# 流れを読んでない近視眼的なアフォどもは無視

320:デフォルトの名無しさん
17/08/25 09:54:07.34 mWX/padLd.net
「本当は」とは?
C++の規格?
本来の英語の意味?

321:デフォルトの名無しさん
17/08/25 09:55:05.21 mWX/padLd.net
突然「本当は」とか書いても、どういう意味でどういう意図で書いたかなんてわからんぞ

322:デフォルトの名無しさん
17/08/25 10:21:51.52 RGmsOxnq0.net
わかんなくていい
バカ以外とさえ話せれば

323:デフォルトの名無しさん
17/08/25 12:45:56.08 s9vD7wq8M.net
>>304
ごちゃごちゃ書いてるけどどこから
> 老害じゃなければ一目で処理の重さがわかるんじゃね
が出てくるのかさっぱりわからん

324:デフォルトの名無しさん
17/08/25 12:58:22.38 BrjL74izM.net
>>311
いや、グローバルのオペレーターに対して、型特化を新設するんだから、newも代入も、オーバーロードでいいんだよ。って話。
c++の実現方法(クラス内定義)でイメージしちゃうから、オーバーライドと思っちゃう気持ちはわかるけど。

325:デフォルトの名無しさん
17/08/25 13:22:21.09 2fWpITWD0.net
operatorを仮想関数にしたことないや

326:はちみつ餃子
17/08/25 13:27:32.63 a70Vb5yP0.net
そうか。

327:デフォルトの名無しさん
17/08/25 14:12:03.69 RGmsOxnq0.net
::operator newは新設か?
ユーザー定義するとビルトインを置き換えるだろ

328:デフォルトの名無しさん
17/08/25 14:14:35.88 11RxMW0L0.net
>>319
だからオーバーライドだというの?

329:デフォルトの名無しさん
17/08/25 21:42:16.87 0c3f6Usc0.net
そういえば昔C++のoperator批判を見たなと思って探してみたらこれだった。
URLリンク(local.joelonsoftware.com)

330:デフォルトの名無しさん
17/08/25 22:11:25.23 IbGqUCQq0.net
operatorをオーバーライドしてる人いるみたいだけど、operatorを仮想関数にするのってどういう時なの?

331:片山博文MZ
17/08/25 22:17:04.37 M7y+0IYNd.net
>>322
ポインタから多態を利用じゃねーの?

332:片山博文MZ
17/08/25 22:28:47.46 M7y+0IYNd.net
ポインタじゃなくてC++参照ね。

333:デフォルトの名無しさん
17/08/25 22:37:18.66 IbGqUCQq0.net
>>323
具体的には何のoperatorをオーバーライドしてるの?

334:デフォルトの名無しさん
17/08/25 22:39:23.28 11RxMW0L0.net
遺伝子

335:片山博文MZ
17/08/25 22:45:02.30 M7y+0IYNd.net
operator==を仮想化したら、多態性が必要な状況であれこれはかどるだろう。
Numberクラスを基底として、RealクラスやらComplexクラスを作ったりしたら、同値確認にoperator==を使いたくなるだろう。

336:デフォルトの名無しさん
17/08/25 22:47:00.20 g+9HiqWa0.net
男はオーバーロード
女はオーバーライド

337:デフォルトの名無しさん
17/08/25 23:16:33.27 11RxMW0L0.net
>>327
それってダブルディスパッチの問題起きないの?

338:片山博文MZ
17/08/25 23:29:12.56 M7y+0IYNd.net
>>329
お馬鹿で済みません。

339:デフォルトの名無しさん
17/08/25 23:44:46.18 11RxMW0L0.net


340:デフォルトの名無しさん
17/08/25 23:58:05.92 w8QRZZ7K0.net
よく分からん揉め方をしているが、
俺は>>298の表現は極めて的確で分かりやすいと思うぞ。
俺はあれで納得だ。サンクス。一応言っておく。

341:デフォルトの名無しさん
17/08/26 00:07:55.23 NVd9gXan0.net
>>327
RealクラスとComplexクラスを比較した時の振る舞いが直感的じゃなくね?

342:デフォルトの名無しさん
17/08/26 00:16:33.84 m69mKCvsr.net
はてoverloadとoverrideは排他的な存在だっただろうか
ちなみに規格で::newはreplace, displace
overrideとは言わない

343:片山博文MZ
17/08/26 00:17:51.21 HPL6ZAk0d.net
>>333
その場合はオーバーロードよりも強力なダブルディスパッチを使うのが妥当だった。すまね。

344:デフォルトの名無しさん
17/08/26 00:20:52.21 kchnKiPS0.net
まだおまいらオーバーなんちゃらで言い争っているのかw

345:片山博文MZ
17/08/26 00:39:36.17 HPL6ZAk0d.net
URLリンク(qiita.com)
これを貼るだけだったな。

346:デフォルトの名無しさん
17/08/26 03:28:35.80 KpMB1a9f0.net
>>332
operator newって仮想関数にできなくない? なんでオーバーライドが的確なの?

347:デフォルトの名無しさん
17/08/26 08:56:30.09 jcvKb5O50.net
>>336
言い争ってなんかいねえぜ
一部のアフォどもをこっちはスルーしてるんで争いになってない

348:デフォルトの名無しさん
17/08/26 17:00:12.26 dtKp7Pu80.net
>>334
排他的くねなぜならシグネチャが変わらないオーバーロードは無いしシグネチャが変わるオーバーライドもこれまた無いからだ

349:デフォルトの名無しさん
17/08/26 17:19:10.37 XR3UemNVr.net
そうか?
URLリンク(ideone.com)
これはオーバーロードかつオーバーライドだと思うが
オーバーロードは特定の関数について言及しているのではなく同一スコープに同一の名前が複数存在する状態を指すものだと思っとりました

350:デフォルトの名無しさん
17/08/26 18:47:41.02 O53zOlu10.net
>>341
それは
上の方はオーバーライド

下の方はオーバーロード(を追加している)
でしょ
関数単位で見たら排他だと思う

351:デフォルトの名無しさん
17/08/26 19:44:51.20 dtKp7Pu80.net
>>342
あー左様かvoid B::f(int)のオーバーライドとf()のオーバーロードが同時にありえるのか、
完全に排他的(背反)というわけでもないな
ただしそれぞれ独立な概念とは言える
なぜなら下記の4通り全ての組み合わせが有り得、互いの成立要件に他方の成立の真偽が関係しないだから、
1. オーバーライド∧オーバーロード
2. オーバーライド∧¬オーバーロード
3. ¬オーバーライド∧オーバーロード
4. ¬オーバーライド∧¬オーバーロード

352:デフォルトの名無しさん
17/08/26 19:47:02.66 dtKp7Pu80.net
訂正
△: ただしそれぞれ独立な概念とは言える
○: ただしそれならそれでそれぞれ独立な概念とは言える

353:デフォルトの名無しさん
17/08/26 23:26:52.66 rkE5GYva0.net
同じ名前の関数で、引数が同じならオーバーライド、 引数が違えばオーバーロードだよ?
そんなに難しい話じゃないはずだった気がしたんだけどな。

354:デフォルトの名無しさん
17/08/26 23:42:30.55 eHXsO5oX0.net
>>345
usual な operator new は、いつも
void* operator new(std::size_t);
というシグネチャなのに、なぜオーバロードなのか
という話題だったのでは?

355:デフォルトの名無しさん
17/08/27 00:10:24.07 NCmIfXRWr.net
「同じ名前の関数で、引数が同じならオーバーライド、 引数が違えばオーバーロードだよ?」
これまた珍説を

356:
17/08/27 00:50:06.39 Cp6PBSjn0.net
>>347
>引数が違えばオーバーロードだよ?
演算子のオーバーロード

357:デフォルトの名無しさん
17/08/27 00:54:36.33 DagGpBhC0.net
おまいらのアタマがオーバーフロー

358:デフォルトの名無しさん
17/08/27 02:06:53.19 99717IEt0.net
みんな人に説明できるだけのまともな言語能力を備えてから来てくれ
あとクソみたいな反論をするのもやめよう

359:デフォルトの名無しさん
17/08/27 07:10:35.78 NCmIfXRWr.net
>>348
それは>>298>>319を読んだ上で物申してるのかね

360:デフォルトの名無しさん
17/08/27 10:16:57.94 FD5yZ+sq0.net
2010年にも同じような話あったみたいね
URLリンク(cpplover.blogspot.jp)

361:デフォルトの名無しさん
17/08/27 13:59:49.66 nap9vlyD0.net
constオブジェクトのデストラクタって
一般に中で非constメソッドを呼んでいるのに
なんで合法に呼び出されるの?
それとも合法に見えるのはVC++固有?
プロセスが死ぬまで破棄されないのが正しいロジックなんじゃないの

362:はちみつ餃子
17/08/27 15:08:55.59 hmah67i90.net
const の考え方には logical const と bitwise const があって、
logical const を実現するために言語としては bitwise const を基本として要求してる感じ。
logical const ってのは論理的な const 性で、
bitwise const ってのはビットパターンとして不変ってことね。
mutable キーワードを付ければ const なメンバ関数からも操作できるデータメンバを
作れるけど、これは bitwise const でなくてもよくなるだけで
logical const であることは要求される。
(その性質を満たすようにプログラマが配慮しないといけない。
コンパイラは面倒みてくれない。
reinterpret_cast と同じくらいには危険で面倒くさいと思う)
寿命が尽きたオブジェクトにはアクセスは許されないから
もはや logical も bitwise も関係なく const 性は無意味になる。

363:デフォルトの名無しさん
17/08/27 15:29:34.75 nap9vlyD0.net
>>354
>寿命が尽きたオブジェクトにはアクセスは許されないから
>もはや logical も bitwise も関係なく const 性は無意味になる。
これはだいたいワカタ
前半はわからん
bitwise const でないオブジェクトがROMに割り付けられたり、とか、
bitwise const でないオブジェクトがmemcpy()的手段で同じビットパターンに繰り返し上書きされるみたいな
処理があったりするとbitwise constでないことは致命的だが
それ以外のケースではconstといいつつクラス内部ではmutableな扱いであっても全く実害無いんじゃ…
ていうかそもそもC++の非PODオブジェクトに対するconstはbitwise constなのかかなり疑問が、、

364:はちみつ餃子
17/08/27 16:21:07.86 hmah67i90.net
>>355
logical const であれば性質として充分だよ。
だけど、それをコンパイラがチェックすることは出来ないから、
原則としては bitwise const を要求して、
それがちゃんとできてなけりゃエラーも出す。
だけど、 bitwise でなくても logical に出来る場面では
プログラマの責任でやるよっていうのを mutable キーワードで表すってわけ。

365:デフォルトの名無しさん
17/08/27 16:23:29.96 Pcpci17F0.net
ルールを増やせば増やすほど使ってもらえない。

366:デフォルトの名無しさん
17/08/27 16:50:02.45 99717IEt0.net
しかし現実には使われているもよう

367:デフォルトの名無しさん
17/08/27 16:52:16.64 OhTIHz5/0.net
おい、mutableなんてキーワード初めて知ったぞw
ググってみたらC++11から導入されてたんだな知らんかった、、、

368:デフォルトの名無しさん
17/08/27 16:55:16.46 7+G8dT33M.net
またまたご冗談を

369:はちみつ餃子
17/08/27 17:26:13.10 hmah67i90.net
>>359
ANSI で規格化された最初から有ったがな (´・ω・`)

370:デフォルトの名無しさん
17/08/27 19:19:01.73 +rBIMmXP0.net
>>359
いやいやおいおい…

371:デフォルトの名無しさん
17/08/27 22:57:23.47 epttQBO0r.net
「C++の非PODオブジェクトに対するconstはbitwise constなのかかなり疑問が」
標準レイアウトではないconstexprなオブジェクトはビットレベルでconstなのだろうか
constexpr struct A { constexpr A()=default; int m=1; private: int n=2; } a;
確かに疑問だ

372:デフォルトの名無しさん
17/08/27 23:06:36.65 Pcpci17F0.net
どんどんキーワードが増えるのは思いつきで仕様を決めてるからだ。
無能SEの下のプロジェクトではよくあること。
50年は仕様を追加しないつもりで仕様を決めてほしい。

373:はちみつ餃子
17/08/27 23:35:20.73 hmah67i90.net
コンピュータを取り巻く事情は予想の斜め上をいく形でどんどん変わるのに言語だけのんびりしとれるかいな

374:デフォルトの名無しさん
17/08/28 00:12:36.48 OtmMiMVk0.net
永久に仕様が追加されない言語なんてたくさんあるから好きなのを使いなよ
機能が必要になった背景やそれを追加することが適当だという根拠まで知ってろとは言わないからさ

375:デフォルトの名無しさん
17/08/28 00:24:42.42 JtlNpsV60.net
雑魚に上から言われる筋合いはない。そんな態度だから囲まれて職質されるんだよ。

376:デフォルトの名無しさん
17/08/28 00:26:53.59 GiFa6ZsP0.net
つ、追加しなくても1.5年待てば倍速くなるもん…!
ていうかメモリバリア周りの扱いが未だに規格化されていないのは言語としてはお寒い状況だといわざるおえない
ゆくゆくはOpenMPIを正式に取り込んでキャッシュスヌープ無しのメニーコア環境でも
最高のパフォーマンスを発揮できるだけの選択肢をプログラマに提示し、
さらにはGPGPU対応もしてホスイ、

377:デフォルトの名無しさん
17/08/28 00:29:36.83 GiFa6ZsP0.net
スマンOpenMPIはOpenMPのつもりで言った!

378:デフォルトの名無しさん
17/08/28 01:19:26.30 83bJD8zl0.net
openmpみたいなマクロまみれよりtbbのほうが好き

379:デフォルトの名無しさん
17/08/28 01:23:37.61 JtlNpsV60.net
そんなに新機能を追加したいなら、新しく別言語を創れ。JavaやC#みたに成功して普及した事例はいくらでもある。
一度普及した言語に、碌に実務でコードも書いたことないような輩が後からやってきてデタラメな糞仕様を追加するんじゃない。

380:デフォルトの名無しさん
17/08/28 01:31:42.56 OtmMiMVk0.net
後から来た輩(ビャーネ・ストラウストラップ)

381:デフォルトの名無しさん
17/08/28 01:37:29.69 JtlNpsV60.net
CとC++が同じ言語と思ってるとは、さすが見込みどおりの雑魚。

382:デフォルトの名無しさん
17/08/28 02:11:44.25 nC18rNgy0.net
実務でコード書く人=Windowフォームにボタンを乗せる仕事の人

383:はちみつ餃子
17/08/28 03:06:17.85 yPLR2tUq0.net
ライブラリの蓄積もあるからさ。 負債の蓄積とのバランスだよねー。
ときどき Go とか Rust とかみたいなのが出てきて一新してくれりゃいいんだけど、
C++ はともかく C はいつまでも死なない気がする。

384:デフォルトの名無しさん
17/08/28 07:31:44.71 GiFa6ZsP0.net
別に新機能のほしいものリストを無秩序に書き連ねたわけではないもん;;
C++はSimulaの代替品として登場した時点から実行時パフォーマンスの追求を意識していたし、
理解しやすさなら他の言語を選択すればよい昨今においては
特に実行時パフォーマンスの追求こそがC++の存在意義として強調されるべき
テンプレートによるメタプログラミングに最高の効率を阻害する穴があれば塞がれねばならないし、
最適化がほっといたら中途半端にとどまるケースには尻を叩くキーワードが追加されねばならないし、
そのときどきのアーキテクチャーの詳細に立ち入ってでもあらゆる実行時パフォーマンス追求手段が
プログラマに提示されねばならない
インテリセンスがまともに働かないとかテンプレートの分割コンパイルがもはや完成しないバベルの塔だとか
言語規格が変わり続けて解説書が分厚くなる一方だといった側面の不調法はそうであってこそ許容される、

385:デフォルトの名無しさん
17/08/28 07:36


386::18.26 ID:GiFa6ZsP0.net



387:デフォルトの名無しさん
17/08/28 07:36:46.75 96+DvSIX0.net
ウニファイドコールシンタックスを直ちに入れるのです。
コードサジェストが爆発してもいいじゃない。

388:デフォルトの名無しさん
17/08/28 07:43:38.48 96+DvSIX0.net
>>377
機会が賢くなったら、あらゆる言語をCに一回トランスコ―ドするようになる気がする。
そこでパフォーマンスチューニングしてコンパイル。
人間だとコストかかってできない方法。

389:デフォルトの名無しさん
17/08/28 07:58:00.50 GiFa6ZsP0.net
中間言語とか3番地コードと条件判断とgotoで必要にしてほぼ十分なのでは…

390:デフォルトの名無しさん
17/08/28 08:00:37.13 96+DvSIX0.net
>>380
あーそんなもんか。
それじゃ、アセンブリにした方が早いね。
もしくはあらゆる言語がLLVMを介してコンパイルされるとかね。
LLVMのストラクチャも自動生成とか。
あー怖い。

391:デフォルトの名無しさん
17/08/28 12:49:34.85 0HhHgrwNM.net
ちょっとしたコーディングミスで、以下の簡易コードように書いてしまって、ハマったのですが、コンパイルエラーにならなかった事に驚きました。
string a(何らかの文字列);
string s = s.replace(置換指示); //a.replace() と書こうとした。
コピーコンストラクトの右辺に、構築中(?)の自分自身を使ってしまったと言う事なのですが、これは規格上合法なのでしょうか?

392:デフォルトの名無しさん
17/08/28 12:59:59.78 0HhHgrwNM.net
↑のサンプル貼っておきます。
URLリンク(ideone.com)

393:デフォルトの名無しさん
17/08/28 13:04:19.26 96+DvSIX0.net
x^=x でゼロになるんだっけ。
一応昔からある文法だけど。

394:デフォルトの名無しさん
17/08/28 16:57:17.16 KK7lC/68d.net
>>384
それの使い道がよくわからん
コンパイラと環境によっては x=0 より速かったりとか?
即値は全て名前を付けなきゃいけないとかいう糞コーディングルールの回避とか?
volatileをつけて、
ダミーリードと0クリアを1文で書けるとか?
思い付くのはこのくらい

395:デフォルトの名無しさん
17/08/28 17:22:45.55 3VrqihWx0.net
コンストラクタが実行される前なのでオブジェクトの内容は不定だろうし
不定なオブジェクトにも適切にアクセスする場合なら合法かもしれない
ただ不定な変数を使って何かしようとすると途端に undefined behavior 地雷を
踏むことが多いのでそこで頑張っても実りがあるとも思えないけど

396:デフォルトの名無しさん
17/08/28 17:43:39.28 +dyqlMtL0.net
>>385
アセンブラでよく使う xor eax,eax を逆コンパイルするとアレになる

397:デフォルトの名無しさん
17/08/28 17:52:50.38 eeKFZJ460.net
のっぷぁ

398:デフォルトの名無しさん
17/08/28 17:54:52.47 eeKFZJ460.net
or eax,eax だろバカチン

399:片山博文MZ
17/08/28 18:02:16.04 HJX32+mcd.net
xor eax,eaxがゼロクリアで、
or eax,eaxが何もしない。

400:デフォルトの名無しさん
17/08/28 18:08:57.91 Wq6HqE7w0.net
さすがにPC系コンパイラで
0クリアを最適化しないのは無いかと
xor eax, eax は0イディオムとか言って、
普通のxorとは微妙に扱いが異なる
昔は sub ax, axより xor ax, axの方が微妙に速かったりした
今はフラグ以外は同じ
>>390
何もしないわけじやない
ちゃんとフラグが変わる

401:デフォルトの名無しさん
17/08/28 18:38:50.00 7lbHEj3b0.net
URLリンク(www.st.rim.or.jp)
昔とはこういうスゴイ編み物の時代ですかね

402:デフォルトの名無しさん
17/08/28 19:05:01.12 Wq6HqE7w0.net
だね

403:片山博文MZ
17/08/28 19:10:04.94 HJX32+mcd.net
編み物だって意味のあるつまら


404:ないことの積み重ねで実現されている。 プログラミングだって多分同じ。



405:デフォルトの名無しさん
17/08/28 19:36:30.92 KK7lC/68d.net
コルモゴロフの最小プログラムに対しても同じ事が言える?

406:デフォルトの名無しさん
17/08/28 19:37:58.17 y0vE8H3MM.net
>>382
質問を変えると、
何でコンパイルエラーにしてくれないんだろう?
ってところが気になっています。

407:デフォルトの名無しさん
17/08/28 19:41:20.09 MWmJNebXr.net
>>382
3.3.2/1には反しないが3.8/6的にはだめだろう(たぶん)
未定義動作なのでコンパイルエラーになることは要求されていない

408:デフォルトの名無しさん
17/08/28 19:41:46.31 KK7lC/68d.net
別のsが定義されてるとか

409:デフォルトの名無しさん
17/08/28 19:58:41.88 rn9GWLpv0.net
>>391
それは x86/インテル方言なだけでは?
普通のアーキテクチャならばロードだけでフラグが変わるもんですキッパリ

410:デフォルトの名無しさん
17/08/28 20:21:02.23 KK7lC/68d.net
x86の話をしてるわけだけど

411:デフォルトの名無しさん
17/08/28 20:22:04.01 KK7lC/68d.net
eaxなんてレジスタ、他にあるか?

412:デフォルトの名無しさん
17/08/28 20:48:55.97 GiFa6ZsP0.net
inline void zero_clear(int& x) { x ^= x; }

413:デフォルトの名無しさん
17/08/28 20:55:31.76 GiFa6ZsP0.net
3E AF

414:デフォルトの名無しさん
17/08/28 22:22:13.51 Na7nyTMka.net
そう言えば64bitアセンブラ勉強してた時ウェブで64bitレジスタでxor rax raxってするより、64bitプログラムでもxor eax eaxってした方が機械語短いって書いてたな。
アセンブラ上は同じ長さだけど、機械語上は64bit命令の方が長い&32bitレジスタへの操作は自動的に64bitレジスタの上位bitがゼロクリアされるから同じ動きになるとかなんとか。
キャッシュに入るコードが増えるから速くもなるらしい。

415:デフォルトの名無しさん
17/08/28 22:33:21.77 Wq6HqE7w0.net
intel公式のドキュメントに書いてあるレベルだから
普通のコンパイラは当然そういうコードを吐くと思うよ

416:デフォルトの名無しさん
17/08/29 00:27:36.33 AHYNkT+D0.net
OpenMPIを用いたプロセス並列コードのプロファイルを取りたいんですが、
gprofだとテンプレートがごちゃごちゃしててすごく見にくいです。
何か勧めなフリーのプロファイラはないでしょうか?

417:デフォルトの名無しさん
17/08/29 01:49:03.35 skpcufF70.net
座標を動的配列で格納していき、
(50,50),(100,100) //直線1の座標
(30,30),(70,70)  //直線2の座標
↑こんな感じに直線の数だけ座標の組み合わせが増えます。
この上から2個の座標の組み合わせ、
つまり座標4点を使い交点を計算するプログラムを作ろうとしています。
計算式を作っていく際にfor文を使っているのですが
1つ目の座標の組み合わせと2つ目の座標の組み合わせを計算式内で使うので
二重ループがいいかと思い作ろうとしましたが動的配列での二重ループの作り方が分かりません。
助けて頂けないでしょうか…。
長々と申し訳ありません。

418:デフォルトの名無しさん
17/08/29 02:17:37.67 On05DpTS0.net
>>396
void* p = &p;
↑こういうのは受け入れないといけない一方で >382 を NG とするための境目を
ちゃんと定めてコンパイラ実装するのはめんどくさそうだなと思う。
頻繁に踏む問題でも無くてコンパイラ実装者がそこに注力する動機も薄そうだし。

419:デフォルトの名無しさん
17/08/29 02:27:26.09 KA5Uf3Ix0.net
>>397
む、なるほど…
確かに未定義であれば、コンパイルエラーにしなくとも文句は言えませんね。
>>408
!!!なるほど!!!
実用性はさておき、その例文で納得してしまった。

420:デフォルトの名無しさん
17/08/29 02:33:36.21 vHDkbJz50.net
>>407
動的配列だと何が問題あるの?
何につまずいているのかよくわからんなあ
例えばキューで実装するとか
直線をひとつづつプッシュ、



421:諠^イミングで直線を必要数ポップし交点を描画



422:デフォルトの名無しさん
17/08/29 22:17:26.88 R/tQJHqT0.net
Iteratorで2重ループするやり方がわからな
いとか?

423:デフォルトの名無しさん
17/08/30 00:38:16.23 95r+Hm0D0.net
はい
iteratorでの二重ループが分かりません。
x1={1,2,3}
x2={4,5,6}
1*4 , 1*5 , 1*6
2*4 , 2*5 , 2*6
3*4 , 3*5 , 3*6
といったような計算が出来るプログラムを動的配列でつくりたいです。

424:片山博文MZ
17/08/30 01:26:58.11 KDhhphrhd.net
it->begin(), it->end()

425:デフォルトの名無しさん
17/08/30 01:55:32.89 0ZIBVCLk0.net
基礎の基礎が判ってないってパターンか

426:デフォルトの名無しさん
17/08/30 02:05:27.07 J1aJRQDA0.net
>>412
まず通常のループは書けるの?
たとえばx2は4固定でいいのでループを記述してみたら?

427:デフォルトの名無しさん
17/08/30 05:26:39.94 27CMeyKU0.net
>>412
URLリンク(ideone.com)

428:デフォルトの名無しさん
17/08/30 06:45:43.57 3iEZIBUv0.net
>>413
itがイテレータならおかしいな

429:デフォルトの名無しさん
17/08/30 07:05:47.51 0ZIBVCLk0.net
いてれたのいてれた

430:デフォルトの名無しさん
17/08/30 08:57:17.67 95r+Hm0D0.net
>>415
通常のループも、二重ループもあらかじめ用意した配列でなら書けます
動的配列になるとiteratorの使い方が分からずプログラムが動かなくなってしまうのですが笑
>>416
ありがとうございます使ってみます!

431:デフォルトの名無しさん
17/08/30 09:07:19.16 Nr6Jv4Sva.net
>>419
つまり分からないのはイテレータのループそのもので、二重ループは関係ないということかな?

432:デフォルトの名無しさん
17/08/30 09:12:14.51 y1raZQAZ0.net
perlのfor my $elem (@array){をやるのに何年懸ったんだろうといつも思う

433:デフォルトの名無しさん
17/08/30 09:13:52.07 95r+Hm0D0.net
>>420
そんなかんじですね
たとえば、x[i+1]をiteratorのループではどう表現するのかとかそういうのが分からないとかです

434:デフォルトの名無しさん
17/08/30 10:44:38.77 VpX1ZCKl0.net
イテレータは繰り返しを前提としているので基本的に進むと戻るの操作しか提供しない。ランダムアクセスっていうのもなくはないけどね。
it++で前進、it--で後退。操作して、Container.begin()と同じ値なら先頭を、Continer.end()と同じ値になったらそのコンテナの末端を指している。
基本的にはポインタを抽象化したものだからポインタの操作を思い出すと少しわかりが早い。

435:デフォルトの名無しさん
17/08/30 12:11:28.40 NGfIYJwv0.net
>>422
君には早いのでまずはポインタでぐぐってくれ
x[i + 1] == *(x + i + 1)

436:デフォルトの名無しさん
17/08/30 12:24:58.79 PTG1CRxV0.net
ポインタではループ書けませんって
なんかつき合う気失せるぐらい初心者やね
いやアンタが悪い訳じゃないんやが

437:デフォルトの名無しさん
17/08/30 12:35:06.14 BJd10UjW0.net
>>419
それ、end()が何を返しているかとか、
連続領域でないのにポインタを返しているとか
そういう系の問題じゃね?
あと「イテレータのループ」というのが
range-based-forだったりすると
x[i+1]はそもそも無理だぞ

438:デフォルトの名無しさん
17/08/30 13:45:30.49 95r+Hm0D0.net
みなさんありがとうございます!
もっと勉強して出直してきます

439:デフォルトの名無しさん
17/08/30 20:58:46.39 UeWdSpDY0.net
Cとjavaの基礎やったから基本の文法とオブジェクト指向の触りみたいな部分だけわかるんだけどこの状態でテンプレートとかの勉強初めていいの?
あそこらへん急に難しくなるイメージあるけど他に先にやるべきこととかあります?
あとそういう人におぬぬめの本とかもしあったら教えてくだされ

440:デフォルトの名無しさん
17/08/30 21:26:25.83


441:it2NMgLA0.net



442:デフォルトの名無しさん
17/08/30 22:54:34.30 T8zS0A0mr.net
>x[i + 1] == *(x + i + 1)
はて、いったい何の言語の話だろうか

443:デフォルトの名無しさん
17/08/30 23:02:57.29 lE/piHRT0.net
突っ込みたいことがあるならはっきり指摘すれば?

444:デフォルトの名無しさん
17/08/31 02:07:06.34 Ce9FMcgb0.net
>>424
ポインタを意識させないのがイテレターだろうに
>>430
左辺と右辺が同じだって事が言いたいんだろうけど...
上に書いた理由でトンチンカンと言わざるを得ない

445:デフォルトの名無しさん
17/08/31 02:08:47.68 Ce9FMcgb0.net
>>422
it_next = it;
it_next ++;
とか

446:デフォルトの名無しさん
17/08/31 02:11:16.28 JJLmvwvW0.net
>>432
意味がわからない
もう少しわかりやすく頼む
出来ないならもう発言しなくて良いから

447:デフォルトの名無しさん
17/08/31 02:40:29.14 ZosLKwRR0.net
なぜにイテレータでやろうとするのか
valarray使えばこんなの即効だろ

448:デフォルトの名無しさん
17/08/31 05:33:17.64 5oi4R35S0.net
あのー、このスレに限らずどこもなんだけどさ、
初心者をケナスくせは、やめた方が良いよ。
ちょっと知ってる者の傾向だね。
ちょっと自分が物事を知ってるから、
「自分らが、上だ。と、知らない者をけなす癖」が多大に有るよね。
本当に知ってる者は、初心者にもやさしく教えてあげるよ。

449:デフォルトの名無しさん
17/08/31 05:41:23.80 xNENwSVur.net
>>432
>左辺と右辺が同じ
少なくともここはC++のスレで、C++では同じでないのだが何を言ってるんだお前は

450:デフォルトの名無しさん
17/08/31 06:49:36.91 L0jWKquXM.net
知らない者を貶す気はないけど知ったかの頓珍漢な指摘は全力でバカにする

451:デフォルトの名無しさん
17/08/31 06:52:13.92 8V5/tdJ10.net
また規格に自信ある奴が日本語読めてないな
日本語の文脈を理解できるようになってから発言してくれ

452:デフォルトの名無しさん
17/08/31 07:01:04.95 Ce9FMcgb0.net
>>437
C++でいつでも同じかなんてことはどうでも良い
レス自体トンチンカンなんだから

453:デフォルトの名無しさん
17/08/31 09:29:52.97 F7+XKf5b0.net
はっきり指摘できないのなら謙虚に発言した方がいい

454:デフォルトの名無しさん
17/08/31 10:24:10.68 DHTk7O50d.net
全くその通りだよね
ポインタ滅ぶべしとか思ってるのかも知れないけど、初心者はまずイテレータを理解してその後
ポインタを学べば良いなんてプロセスは効果的とは限らないし、個人的には無理があると思う。

455:デフォルトの名無しさん
17/08/31 10:46:40.85 8V5/tdJ10.net
C++使ってて初心者は隠蔽された中身を理解しなくていいとか本気で思ってる奴いるのかよ
それにイテレータはポインタのような操作ができるインターフェイスなのでポインタを理解してることは前提となっている

456:デフォルトの名無しさん
17/08/31 12:26:30.87 +APqOuiHM.net
逆だよ。初心者は隠蔽された中身を理解しなくていい範囲と使うべき。
初心者に教えるときも注意しなきゃいかん。

457:デフォルトの名無しさん
17/08/31 12:41:58.03 aPsP1NJ+d.net
>>443
イテレターを使う上で、ポインタを知らないと何が問題?

458:デフォルトの名無しさん
17/08/31 12:45:17.10 JYM1pg890.net
「あたかもポインタのように振る舞うオブジェクト」を使うにあたって
そもそもポインタを知らないことの何が問題か本気でわからないのか?

459:デフォルトの名無しさん
17/08/31 14:20:58.17 +APqOuiHM.net
イテレーターのコンセプト、理解してる?
ポインタのように振る舞う、じゃないよ。

460:デフォルトの名無しさん
17/08/31 14:38:31.89 BoCBvGLq0.net
イテレーションすることを目的にしてるけど、
ポインタもイテレータの機能を持ってるからポインタを想像するとわかりやすいっていうのはある。

461:デフォルトの名無しさん
17/08/31 15:09:44.78 JYM1pg890.net
>>447
どっかから引用したわけじゃないんで
そういうフレーズにはなってないだろうなあ
ポインタの使い方に


462:、イテレータの使い方を似せてあるのは 誰の目にも明らかなんだが、おまえだけ違うのか? 重箱の隅でない説明がもしできるなら拝聴したいぜ



463:デフォルトの名無しさん
17/08/31 15:25:08.02 8V5/tdJ10.net
ポインタに似せるというコンセプトではないので、ポインタと同じ構文で操作できてもポインタとは何の関係もありませ〜んwwww

そんな話してねえだろコミュ障か?

464:デフォルトの名無しさん
17/08/31 16:21:10.10 N6KLaE+9M.net
イテレータの使い方がポインタの使い方に似せてある…?
もしかして、イテレータの意味わかってないんじゃないか??

465:デフォルトの名無しさん
17/08/31 16:22:24.21 JYM1pg890.net
あ、ふじこったw
そのザマ見て気が済んだ

466:デフォルトの名無しさん
17/08/31 16:48:47.10 8V5/tdJ10.net
>>451
はいはい
イテレータはポインタの操作方法と互換性がある
ただし静的配列やvectorで使われているランダムアクセスイテレータはすべての操作をサポートしているが、それ以外ではサポートしていない操作もあるので注意
とまで補足を入れたらいいんだろ
配列の話をしていたはずなのにアスペはすぐ話の腰折るから困る

467:デフォルトの名無しさん
17/08/31 16:53:43.88 DHTk7O50d.net
むしろ初心者ほど中身を知りたがるもの。
イテレータなんて実装が隠蔽されてるわけじゃなし、知った上で抽象化したらこうなるってのが妥当な方向だ。
コンパイラがやる最適化等とは別の話だ。

468:デフォルトの名無しさん
17/08/31 16:55:03.46 DHTk7O50d.net
だいたいポインタの理解なんて義務教育レベルだしな。

469:デフォルトの名無しさん
17/08/31 16:55:37.94 +APqOuiHM.net
>>450
初心者に教える、つう前提を無視するなよ。アホか?
なんで初心者にイテレーター教えるのにポインタが必要なんだよ。説明してみろ。


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

555日前に更新/267 KB
担当:undef