- 1 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 17:56:53.03 ID:uFDqtnkl.net]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part146 https://mevius.5ch.net/test/read.cgi/tech/1573094136/ このスレもよろしくね。 【初心者歓迎】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/ (日本語) STLつかうと一気に実行ファイルサイズが10倍に?! 環境によるだろ。 俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力 ランタイムを使用するようにして使っているが、例えばstd::vectorを 使っても使わない時と比べ10Kほどしか増えない すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。 ↑え?だってお前、普通ダイナミックリンクするだろ? "ダイナミックリンク"す・れ・ば、ファイルサイズ**増えないです**
- 357 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 10:49:09 ID:CSTVsvTH.net]
- gotoはRAIIと相性が悪いってのが端的だろ
これはgotoが悪いと言うよりc++の言語仕様上のgotoの扱いが悪いって話 constexprで使えないとか規格が新しくなる度に不都合が増えていくよ
- 358 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 10:57:40 ID:RfLx+x9F.net]
- gotoの使い方くらい知っておいた方が良いかと
- 359 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:07:08.87 ID:fzpRtoDi.net]
- >>350
相性悪い?
- 360 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:07:41.05 ID:CSTVsvTH.net]
- 文字列パーサー内とかでの状態遷移に使うは推奨する
その他でのgotoは代替手段があるし、そっちの方が言語サポート良いからgoto使うのはバカのやること
- 361 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:12:09.60 ID:CSTVsvTH.net]
- まあ不遇な原因はgotoが自由すぎて前にも後ろにも飛べるせいだろうね
変数のデストラクタを呼ぶべきかどうかフラグ管理でもしないとコンパイラが判断できなくなる。 goto使うならその自由さが必要な場面でこそ使うべきなんだよ
- 362 名前:デフォルトの名無しさん [2020/01/19(日) 11:18:58.21 ID:2MN/c8bt.net]
- >>354
プログラミング言語の世界では、前や後ろという表現は直観的にわかりにくい。 前や後ろは相対的なものであり、バックしているイテレータにとっては前はバックなのだ。 上と下なら直観的にわかるだろう。
- 363 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:21:16.66 ID:CSTVsvTH.net]
- 用語としては前後で統一されているような
- 364 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:22:22.50 ID:RfLx+x9F.net]
- gotoの使い方を知らない初心者がこのスレにいるってのが不思議
- 365 名前:デフォルトの名無しさん [2020/01/19(日) 11:27:05.68 ID:2MN/c8bt.net]
- [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。 - Qiita
https://qiita.com/mochizukikotaro/items/84f3ab2740b8efbe0dc6
- 366 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:29:47.11 ID:6oeBvQPN.net]
- >>357
誤魔化さない説明が
- 367 名前:ちゃんとできるやつがずいぶん少ないという、残念な状況が今の日本だ []
- [ここ壊れてます]
- 368 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:38:04.97 ID:RfLx+x9F.net]
- わざわざ複雑にしてまでgotoを避ける
って宗教だよな 使いどころで使う それだけ
- 369 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:42:59.02 ID:ZzFAG3/g.net]
- いうて必要になったことないや
- 370 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 12:30:11.44 ID:L2mlhsAt.net]
- 別にgoto使っても使わなくても馬鹿が書けば複雑なコードになるだろ。
そういう問題じゃない。 そもそもc++の標準ライブラリが例外投げる時点でgotoとの相性は最悪だよ。 一番末端の関数で、副作用もないようなもの以外使えんわ。
- 371 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 12:36:07.26 ID:PgEzQeWd.net]
- gotoおじさんはたぶん例外安全性という概念をわかってない
- 372 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 14:43:36 ID:6jfPBIzz.net]
- >>363
例外安全の定義が難しいのですが、gotoを使っても例外安全を保障することはできると思うのですが、いかがでしょうか。
- 373 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:06:56.67 ID:PgEzQeWd.net]
- >>364
c++の標準ライブラリに関して例外安全とは何かは定義されてる できるできないで言えばgotoかつ例外安全はそりゃできるでしょうよ まずgoto関係なしに例外安全が相当大変であることを理解してから出直してくれ そうじゃなきゃRAII、autoなんとかmakeなんとかの有難みも理解できてないのよ
- 374 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:08:40.81 ID:RfLx+x9F.net]
- 話題のすり替え
- 375 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:16:49.04 ID:PgEzQeWd.net]
- >>366
話題を勘違いしてるのはお前だよ お前は単にbreakでスコープの脱出することに対してgotoの方が簡潔と言ってるんだろう そういう場合があるのは同意するけど今回の話題はそれじゃない スコープの脱出になってるのはRAIIでリソースを安全に開放する前提だからだ だからお前が言うべきはスコープをなくしてgotoを使うというなら 合わせてリソースをどのように安全に開放するかを説明しないといけない 場当たり的でない方法でね そこをまったく説明できない以上お前はgotoおじさんと呼ばれ続ける
- 376 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:20:52.99 ID:fzpRtoDi.net]
- >スコープをなくしてgotoを使う
なんか言ってることが変だと思ったらこんな条件付けてたのか。ブロックスコープ使えばいいじゃん。
- 377 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:26:55.90 ID:RfLx+x9F.net]
- スコープを無くしてgotoで解放?
なんじゃそりゃ? スコープを抜けないと解放されないぞ
- 378 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:27:43.53 ID:PgEzQeWd.net]
- 断わっておくけど
>>295 に対してgotoおじさんが >>297 と言ったのが発端 後出しはしていない ちなみに295を書いたのはおれではない
- 379 名前:295 [2020/01/19(日) 15:31:10.41 ID:2MN/c8bt.net]
- どんな劣悪な環境でも動く do{ } while(0); こそ絶対正義。
- 380 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:33:51.15 ID:RfLx+x9F.net]
- >>295は
do ループを抜けたすぐ下で資源を解放 って書いてあるように見えるけど
- 381 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:34:25.99 ID:RfLx+x9F.net]
- >>370の勘違いってことでいいのかな?
- 382 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:42:01 ID:PgEzQeWd.net]
- >>372
ああ確かに >>295 に対してってのは語弊があったかな ID:cLOUBKze の発言を追ってみて >>303 とかね gotoおじさんかと思ったら別人なのね
- 383 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 17:03:31 ID:6jfPBIzz.net]
- >>365
本来の「例外安全」の定義はもっと広い意味なのですが、あなたは、throwやcatchなどの「例外」が起きたときでもnewされたオブジェクトの削除などを行うという定義を採用されているようです。 break文を用いずにgoto文でブロックを脱出した場合でもオブジェクトは自動解放されるのをご存知ですか?
- 384 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 17:07:28 ID:PgEzQeWd.net]
- >>375
自分は理解しているって言いたいわけね じゃあさ >>273 のお題に対してgotoを使ったエレガントな方法を書いて おれは思いつかないね よろしく
- 385 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 17:11:06.93 ID:4SQs66uE.net]
- そもそも一番のカスはこいつ >>276 >>286
- 386 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 17:42:21 ID:fzpRtoDi.net]
- >>370
>>295に対して>>303が {
- 387 名前: goto label;
} label: でいいんじゃないかってことかと。 逆にどう解釈してRAIIとか例外安全とか持ち出したのか気になる。 [] - [ここ壊れてます]
- 388 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 18:24:30 ID:6oeBvQPN.net]
- 論点を増やそうとするのは苦しいやつの習性だね
- 389 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 18:46:40 ID:PgEzQeWd.net]
- >>378
それだとdo-whileと変わんないだろ gotoおじさんの論点てそれか? 人の事クソバカ言ってるわりに何の優位性があるのかわからんな
- 390 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 18:52:29 ID:6oeBvQPN.net]
- そうだよ、変わんないよ
複合文だけでできることになんでわざわざdoなんて面倒くせえもん使わなきゃいけねえんだよ
- 391 名前:デフォルトの名無しさん [2020/01/19(日) 18:52:32 ID:PM2cmccN.net]
- Rust使えばすべて解決。
- 392 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 18:53:23 ID:6oeBvQPN.net]
- まさかとは思うがブレースを開くのにdoだかforだか何らかのキーワードが必要とでも思ってたか?
- 393 名前:デフォルトの名無しさん [2020/01/19(日) 18:56:46 ID:PM2cmccN.net]
- 俺は何の実績もないおまえの言うことより、あわしろいくや氏を信じるけどな。
- 394 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 18:57:26 ID:yjllCGTd.net]
- >>378
噂のgotoおじさまもさすがにこのコードがいいなんて言わないでしょ
- 395 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 18:59:17 ID:6oeBvQPN.net]
- >>384
ブレースを開くのにキーワードが必要か否かに実績は関係ない 他人のネームバリューにすがるしかなくなったか?
- 396 名前:デフォルトの名無しさん [2020/01/19(日) 19:00:40 ID:PM2cmccN.net]
- >>386
ネームバリューは関係ないんだよ。 あわしろいくや氏は信用できる。 おまえは信用できない。
- 397 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:01:36 ID:4SQs66uE.net]
- >>387
俺はお前のあわしろいくや氏は信用できるという言葉が信用できない
- 398 名前:デフォルトの名無しさん [2020/01/19(日) 19:02:52 ID:PM2cmccN.net]
- >>388
俺のことは信用しなくていい。 あわしろいくや氏を信じろ。
- 399 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:15:30 ID:ocqIlbpk.net]
- 売名乙
- 400 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:29:04.71 ID:yQO+Nq01.net]
- まさか do while 構文が論点だと思ってたんかな?
まあ本当はgotoを推す正当性が全くなくてごまかしてるんだろうけれど。 てかgotoと例外安全性はかなり綿密に絡んだ話だろ。誤魔化しすぎだわ。
- 401 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:45:18 ID:6oeBvQPN.net]
- >>387
ヒゲ生やした教祖様のために死刑になった信者と同じだなw
- 402 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:46:34 ID:fzpRtoDi.net]
- >>380
そのくらいしか思いつかなかったが、>>297はその程度の主張だったんじゃないの? じゃあどういう主張しているとID:PgEzQeWdは解釈していたのかな。そっちが気になる。
- 403 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:46:39 ID:6oeBvQPN.net]
- > かなり綿密に絡んだ話だろ
誤魔化しすぎというブーメランが脳天に突き刺さってるぞw
- 404 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:54:00 ID:yQO+Nq01.net]
- なるほど。。こりゃ話しても無駄だな。
- 405 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 20:25:44 ID:M/ehGL7C.net]
- gotoと例外安全性がどう絡むのかわからんボスケテ;
- 406 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:06:11 ID:fzpRtoDi.net]
- 話しても無駄以前に、結局gotoと例外安全がどう関係するのか一言も出てこなかったな。
- 407 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:10:50 ID:CSTVsvTH.net]
- RAIIとgotoは混ぜられないだろ
- 408 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:13:01 ID:AinWVopR.net]
- そらgotoでリソース開放ルーチンに飛ぶようなCスタイルのプログラム書くと
例外飛んできたときに死ぬって話でしょ (いくらC++にfinallyが無いからってgotoでリソース開放ルーチンに飛ぶのはダメ) ただし元々の質問には関係ない話なんだがな ところでC++にfinallyが無いのはちょっと良くないよね 今となってはラムダで自作できるようになったからいいけど
- 409 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:16:51 ID:fzpRtoDi.net]
- >>398
その「混ぜる」って具体的にはどういうことを言ってるんだろう。
- 410 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:24:53 ID:AinWVopR.net]
- 基本的に break や return も生き先の決まった goto なので
余ほど変な使い方をしない限りRAIIと goto を混ぜれないって事はないよなぁ むしろ RAII を使わないで goto でC系のリソース開放をしていた場合にハマるって話では まぁでもこれは do{ if( error ) break; }while(0); //開放処理 return; でも同じことだし、元の質問には関係ないんだが
- 411 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:34:33 ID:RfLx+x9F.net]
- まだやってんのか
>>377 それ
- 412 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:40:42 ID:RfLx+x9F.net]
- do {
if(...) break; } while (0); よりは { if (...) goto label; } label: の方が良い という
- 413 名前:モ見に賛成
>>303ではないけど [] - [ここ壊れてます]
- 414 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:44:50 ID:RfLx+x9F.net]
- まあどっちでも大差ないけど
- 415 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:47:25.68 ID:RfLx+x9F.net]
- {
{ if (...) goto label; } } label: これはbreakじゃ無理
- 416 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:57:15 ID:RfLx+x9F.net]
- {
switch (...) { case ...: goto label; } } label: これも無理
- 417 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:11:05 ID:ByUy1Erg.net]
- while(0)とか意味不明なコードよりgotoでスコープ抜ける方がはるかにシンプルだわな
- 418 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:15:20 ID:RfLx+x9F.net]
- 一応 do while(0) の使い方も覚えておいた方が良い
他人のコードを見たりマクロで使ったり する事もあるだろうから
- 419 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:17:28 ID:JMAoH3/H.net]
- 普段のdo whileもwhile(0)って書くなど弊害が出るのでやめた方がいい
- 420 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:19:27 ID:ByUy1Erg.net]
- ループするつもりもないのにループの構文使うのは悪手だと思う
- 421 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:27:26 ID:RfLx+x9F.net]
- >>409
日本語で
- 422 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:33:02 ID:fzpRtoDi.net]
- そこはまぁ、ループではあるけれども同時にbreakが使えるブロックでもあるわけで、
実際do-whileなんてほとんどがそういう使い方しかされていないわけだし。 ループできる構文でループしないのはbreakできる構文でbreakを使わないのと 同じようなものかと。
- 423 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:36:02 ID:JMAoH3/H.net]
- >>411
do whileしてるのになぜか1回しか実行してないのに気付くのに時間がかかる 習慣で書くのでwhile(0)に気づけない
- 424 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:48:25 ID:PgEzQeWd.net]
- こんなささいな違いは個人の好みでいいと思う派
do-while使わない派の言い分もわからなくもないが、 ソースを読む場合gotoだってgoto先を確認しないと意図が理解できないだろ label名を考える必要があるのもちょっとめんどい なのでこんなのどっちでもいい ちなみにrust方式もブロックの先頭にラベル付いてるのは若干違和感覚える
- 425 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:50:45 ID:RfLx+x9F.net]
- >>413
誰か解説よろしく!
- 426 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 23:07:09 ID:Wel1D6/w.net]
- どっちのやり方でも構わないけど、リソース◯◯を自動解放するためのブロックだとか意図を示すコメントを付けておいてくれればそれでいい。
- 427 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 23:13:56.14 ID:AinWVopR.net]
- ↑だからその方法だと例外安全が・・・
C++だとリソース開放は RAII か finally かしか幸せになれない
- 428 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 23:17:22.36 ID:RfLx+x9F.net]
- その方法
ってどの方法?
- 429 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 23:23:50.28 ID:Wel1D6/w.net]
- >>417
誤解させたかもしれないから補足すると、どっちのやり方もと言ったのはただのブロックかdo whileかという話のことで、どちらにせよスコープを抜けて破棄されることを想定していた。 解放ルーチンにとばすことは端から考えてなかったよ。
- 430 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 23:47:54 ID:L2mlhsAt.net]
- 解放ルーチンにとばすくらいしかgotoの有用な使い方なんてねーだろ。
だからRAII、例外安全の話になってるわけだが もう意地になって意味もわからずgotoにこだわってる馬鹿がいる。
- 431 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 00:05:06 ID:ThUag/92.net]
- finally相当のデストラクタをラムダ式で渡すクラスのインスタンスを作ればいいじゃない、
で済まされてしまいそうだがやはりfinallyはあったほうがいい。
- 432 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 01:01:38.84 ID:KvAer05C.net]
- 「解放ルーチンにとばすくらいしかgotoの有用な使い方なんてねーだろ。」
って思えるぐらい、Cではこの技法が多用された なぜなら真実は逆で 「gotoでとばすぐらいしか開放ルーチンをまとめる方法なんてねーだろ」 だったから多用された A→Bでなくて、実はB→Aだったって話 なんだけど、あまりにもB→Aが多用されたから 数の暴力で逆のA→Bも成り立つと感覚的に思ってしまう だが本当にそうだろうか、gotoに開放ルーチンに飛ばす以外の利用法は無いのだろうか 模索してみよう、というのがスレの流れ スレがその流れになるのは自明で 何故ならC++においては「gotoで開放ルーチン」は例外安全の意味で完全な悪手になったから 初めから勘定に入らないし、考える意味もないし、議論の余地もない 他の利用方法を前提に話すのは当たり前で既定路線
- 433 名前: []
- [ここ壊れてます]
- 434 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 01:58:07 ID:wNCym70P.net]
- スレの流れはvectorの動的な解放手段についてです
- 435 名前:デフォルトの名無しさん [2020/01/20(月) 05:25:12.27 ID:KSbNzMqr.net]
- Javaはgotoを無くした先進設計だからな。
- 436 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 07:11:09 ID:SZK6NMcF.net]
- >>410
ほんこれ メインフレーム時代から「なぜ0を足すんだろう」なんてあったけど そういう謎コード書いて俺スゲーってやる厨二病は痛いよな
- 437 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 07:59:32 ID:hWOi4sNW.net]
- つまりgotoと例外安全がどうとか言っていた人はこんなC時代の技法を念頭に置いていたわけか。
if (fail) goto FINAL; FINAL: 後始末 gotoとRAIIの相性が悪い、混ぜられないという話はまた別なのだろうか。
- 438 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 08:30:41 ID:ItoFGwWk.net]
- >>426が例外安全かどうかとgotoは関係ないんじゃない?
>>273と>>426のコードも関係ない ただ例外安全て言いたかっただけと思う
- 439 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 09:55:56 ID:SZK6NMcF.net]
- >>273
vector<usigned char> huge; //do something huge.clear(); gotoは全く関係ない
- 440 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:09:57 ID:rZl1icD3.net]
- >>428
vector自体が確保したメモリが解放される保証がないのでNG とっくに答えは書かれているのだから今からどやるのやめろ
- 441 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:14:06 ID:SZK6NMcF.net]
- 保証しないってどこに書いてあったっけ?
- 442 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:15:25 ID:JGG/x92o.net]
- >>275
これで解決済みだよなぁ std::vector<...>{}.swap(v)
- 443 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:15:47 ID:N9WxJN6X.net]
- >>428
>>291,292辺りを見てこい
- 444 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:17:29 ID:N9WxJN6X.net]
- もちろんclear()の仕様も確認しとけ
- 445 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:18:17 ID:ThUag/92.net]
- >>292 で実装依存の最適化について言及がある。
あるサイズを超えるまではヒープではなくスタックを使うことで高速実行を期待する実装はあり得ると思う。 vectorの具体例は知らないが、EASTL::basic_stringはそうやってる。
- 446 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:40:56 ID:SZK6NMcF.net]
- >>433
だから、どこに書いてあったのかと聞いているんだが
- 447 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 11:04:21 ID:wNCym70P.net]
- >>431の言う空の一時オブジェクトとswapという常套手段で解決するのに質問者のクズは場当たり的などと難癖をつけ、
さらにじゃあnew/deleteしろよというまっとうな意見にバカを言うななどとほざいた結果がこのくだらねえ流れだよ
- 448 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 11:09:12 ID:rZl1icD3.net]
- >>435
c++の規格書は有料だけど持ってんの? ぐぐればstack overflowとかいくらでもひっかかるけど調べた? これは割りと知られた仕様だと思うけどね 実際g++とかでやってみればわかるけどclearしてもcapacity変わんないから
- 449 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 11:14:14 ID:wNCym70P.net]
- 少なくともVC2019はclearでデストラクタが呼ばれてる
- 450 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 11:20:47 ID:N9WxJN6X.net]
- >>438
それはvectorに格納した要素ごとのデストラクタの話であって、それらを格納するためにvector自身が確保した領域が解放されるわけではないだろ
- 451 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 11:29:18.51 ID:SZK6NMcF.net]
- >>437
情報持ってるのに出してくれないのはわかったよ、無理にとは言わん g++の挙動については情報ありがとう
- 452 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 11:53:45 ID:JGG/x92o.net]
- むしろclearで解放せず、capacityが減らないことを保証してほしいよね
capacity減らす手段は用意されているのだから
- 453 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 12:32:03.74 ID:xWGHAxxP.net]
- 結局何を保証して欲しがってるのかさっぱりわからんが
言語仕様はvectorの何やらはもちろん、deleteだってfreeだって、OSにメモリ領域を確実にお返しになる事なんか保証してない事は覚えておこうな
- 454 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 12:33:54.17 ID:RAANiraF.net]
- >>441
> capacity減らす手段は用意されているのだから いや>>432はそれが確実じゃないって話だろ まあそんな実装は
- 455 名前:見たことないけど []
- [ここ壊れてます]
- 456 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 12:52:13 ID:JGG/x92o.net]
- >>443
いや空とswapすれば減るじゃん
- 457 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 13:22:01 ID:hv8WW6TF.net]
- >>444
空とswapは場当たり的に見えて却下と質問者様がおっしゃったからこの論争になったんだぞ
|

|