C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part150
https://mevius.5ch.net/test/read.cgi/tech/1584975873/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
テンプレここまで
探検
C++相談室 part151
レス数が900を超えています。1000を超えると表示できなくなるよ。
2020/05/14(木) 11:53:25.59ID:ZPCfyTux
803デフォルトの名無しさん
2020/07/03(金) 11:14:42.94ID:0L14wyJb 散々罵倒しといてこれくらいで許したるわとかいうメダカ師匠になってるんだよwww
804デフォルトの名無しさん
2020/07/03(金) 11:19:30.11ID:AnL7VPS4805デフォルトの名無しさん
2020/07/03(金) 11:26:31.12ID:AnL7VPS4 煽ってるつもりのようだが脇甘すぎだろw
806デフォルトの名無しさん
2020/07/03(金) 12:17:55.40ID:0L14wyJb >>805
煽って他人に教えを乞うスタイルはお前だろwwww
煽って他人に教えを乞うスタイルはお前だろwwww
807デフォルトの名無しさん
2020/07/03(金) 12:19:01.99ID:AnL7VPS4808デフォルトの名無しさん
2020/07/03(金) 12:19:30.89ID:0L14wyJb 匿名掲示板で根に持たれてる自覚があるとか相当ココロの状態やばいよw
809デフォルトの名無しさん
2020/07/03(金) 12:20:19.89ID:AnL7VPS4810デフォルトの名無しさん
2020/07/03(金) 12:20:41.85ID:0L14wyJb811デフォルトの名無しさん
2020/07/03(金) 12:24:37.22ID:jbweNl0h はい次
812デフォルトの名無しさん
2020/07/03(金) 12:36:38.06ID:AnL7VPS4813デフォルトの名無しさん
2020/07/03(金) 12:38:58.29ID:oEOxZVHb814デフォルトの名無しさん
2020/07/03(金) 12:41:35.64ID:AnL7VPS4 なんか他の#pragma使ってなさそうだね
ルールを途中で変更する#pragmaは珍しくないんだが
ルールを途中で変更する#pragmaは珍しくないんだが
815デフォルトの名無しさん
2020/07/03(金) 12:48:45.85ID:oEOxZVHb まだ何がダメなのかわかってないらしい
しかし途中でコンパイラ切り変えるのは画期的だわw
しかし途中でコンパイラ切り変えるのは画期的だわw
816デフォルトの名無しさん
2020/07/03(金) 12:57:41.14ID:AnL7VPS4 コンパイラ切り変え??? 何の話をしている?
817デフォルトの名無しさん
2020/07/03(金) 13:00:50.61ID:oEOxZVHb もういいよ飽きた
818デフォルトの名無しさん
2020/07/03(金) 13:01:08.06ID:AnL7VPS4 ID変わったけど話し方が酷似している
さては、またあいつか
さては、またあいつか
819デフォルトの名無しさん
2020/07/03(金) 13:05:25.55ID:6268sYfp go は
// コメントに描いてあっても反応するから怖い
// コメントに描いてあっても反応するから怖い
820デフォルトの名無しさん
2020/07/03(金) 13:07:15.94ID:6268sYfp BOM付選んだコンパイラもあるし
コンパイルオプション選んだコンパイラもあるけど
ソースの先頭のエンコード選んだコンパイラはないんだっけ
コンパイルオプション選んだコンパイラもあるけど
ソースの先頭のエンコード選んだコンパイラはないんだっけ
821デフォルトの名無しさん
2020/07/03(金) 13:09:03.86ID:6268sYfp822デフォルトの名無しさん
2020/07/03(金) 13:15:32.85ID:AnL7VPS4 ISO/IEC14882は3年毎に改訂されることになっているんだから
今後は定期的な改定に備える計画もあって然るべきだと思う
今後は定期的な改定に備える計画もあって然るべきだと思う
823デフォルトの名無しさん
2020/07/03(金) 13:22:06.06ID:ShNCsHag 何がいったいわかったのだろう
それに勝手に他の人を認定してるしwww
相当ヤバいわw
それに勝手に他の人を認定してるしwww
相当ヤバいわw
824デフォルトの名無しさん
2020/07/03(金) 13:26:13.21ID:AnL7VPS4 推測と認定の区別がつかないやつ
実社会でも不自由してそうだな
実社会でも不自由してそうだな
825デフォルトの名無しさん
2020/07/03(金) 13:30:10.98ID:AnL7VPS4 あわよくばまぐれ当たりを狙ったようなテキトーな言葉遣いをするやつ
迫力ねえんだよ
迫力ねえんだよ
826デフォルトの名無しさん
2020/07/03(金) 13:32:31.36ID:ShNCsHag では何がわかったんだ?
ああ?
喧嘩に負けて上から目線の捨て台詞にしか見えねーんだよw
ああ?
喧嘩に負けて上から目線の捨て台詞にしか見えねーんだよw
827デフォルトの名無しさん
2020/07/03(金) 13:35:59.48ID:AnL7VPS4 ほらな
心当たりのあることを咎めてこないから全くダメージにならない
何かイヤミを言ってやろうという意図だけはわかるんだが滑りすぎ
心当たりのあることを咎めてこないから全くダメージにならない
何かイヤミを言ってやろうという意図だけはわかるんだが滑りすぎ
828デフォルトの名無しさん
2020/07/03(金) 13:53:09.64ID:BB9T+E2r ここでいつも似たような喧嘩をしている二人って毎回同じ奴らだろう。
なんだかんだ言ってお前ら仲良いな。
他のスレ住人に見せつけてくれなくていいから、よそでやれ。
なんだかんだ言ってお前ら仲良いな。
他のスレ住人に見せつけてくれなくていいから、よそでやれ。
829デフォルトの名無しさん
2020/07/03(金) 14:02:21.86ID:/+uSoVK/ 独りで客寄せのサクラだったりして
830デフォルトの名無しさん
2020/07/03(金) 14:03:03.18ID:ZGwZb8L6 ここまで酷いと自作自演にしか観えない
831デフォルトの名無しさん
2020/07/03(金) 14:06:09.04ID:AnL7VPS4 そういえば俺にひっ絡んでくるやつ
話し方というかアホさが似てると思うことはちょくちょくある
話し方というかアホさが似てると思うことはちょくちょくある
832デフォルトの名無しさん
2020/07/03(金) 14:15:34.52ID:ShNCsHag >>827
787がメダカ師匠になってることがわからないようじゃどうしようもないよw
787がメダカ師匠になってることがわからないようじゃどうしようもないよw
833デフォルトの名無しさん
2020/07/03(金) 14:49:50.97ID:Rli2dJzV まぐれ当たり来ないな
834デフォルトの名無しさん
2020/07/03(金) 15:56:25.56ID:f9zPtScu >>747
先頭行に書けばいいだけだろ
まあ使い勝手を考えてコメントを除く先頭行に書くようにすればいい
> 途中で現れたらどうするの?
エラーにすればいい
> 引数で指定されているのと矛盾したらどうするの?
どちらを優先するかを決めておけばいい
> 複数異なる指定があったら?
エラーにすればいい
よくある処理だしなんの問題もないけど?
先頭行に書けばいいだけだろ
まあ使い勝手を考えてコメントを除く先頭行に書くようにすればいい
> 途中で現れたらどうするの?
エラーにすればいい
> 引数で指定されているのと矛盾したらどうするの?
どちらを優先するかを決めておけばいい
> 複数異なる指定があったら?
エラーにすればいい
よくある処理だしなんの問題もないけど?
835デフォルトの名無しさん
2020/07/03(金) 15:58:53.44ID:36TwtcUk C++使いにしては低能過ぎるレスが多いな。
どういうことだ。
どういうことだ。
836デフォルトの名無しさん
2020/07/03(金) 16:01:05.70ID:3KYyPS1e >>782
プリミティブ型ならレジスタに乗るって思って良いんですかね?
プリミティブ型ならレジスタに乗るって思って良いんですかね?
837デフォルトの名無しさん
2020/07/03(金) 16:11:49.06ID:fxIx3skX >>836
構造体型/配列型以外のデータは原則的にレジスタには乗る。
ただし、参照と直値のどちらが効率が良いかは、レジスタに乗るかどうかだけで
決まるわけではない。
1個のレジスタに乗らなくてもレジスタ数個分ならコピーしてしまった方が
参照より速くなる場合は多い。ケースバイケースだが、レジスタ5個分とかでも
コピーした方が速い場合もある。
構造体型/配列型以外のデータは原則的にレジスタには乗る。
ただし、参照と直値のどちらが効率が良いかは、レジスタに乗るかどうかだけで
決まるわけではない。
1個のレジスタに乗らなくてもレジスタ数個分ならコピーしてしまった方が
参照より速くなる場合は多い。ケースバイケースだが、レジスタ5個分とかでも
コピーした方が速い場合もある。
838デフォルトの名無しさん
2020/07/03(金) 16:59:35.38ID:9AQoDd9l そもそもボトルネックになるのかっていう
839デフォルトの名無しさん
2020/07/03(金) 17:22:38.22ID:f9zPtScu840デフォルトの名無しさん
2020/07/03(金) 17:37:19.38ID:fxIx3skX >>839
憶測じゃなく、俺は高速化の専門家だ。
憶測じゃなく、俺は高速化の専門家だ。
841デフォルトの名無しさん
2020/07/03(金) 17:43:16.98ID:3KYyPS1e842デフォルトの名無しさん
2020/07/03(金) 17:47:39.31ID:fxIx3skX >>841
読んだから、高速化のためには、レジスタに乗るかどうかだけで決めるべきじゃないので正確にアドバイスしたが、あなたが理解できないだけだよ。
読んだから、高速化のためには、レジスタに乗るかどうかだけで決めるべきじゃないので正確にアドバイスしたが、あなたが理解できないだけだよ。
843デフォルトの名無しさん
2020/07/03(金) 17:51:37.27ID:fxIx3skX >>842
参照を使った場合、参照を介してのメンバアクセスにはコストがかかるので、
むしろ最初にコピーした方が高速になることがあるんだ。
文字列データや、巨大なバッファを持つようなものはコピーしてはいけない。
それは速度だけじゃなく、無駄なメモリー領域の確保まで必要となるため。
もしメモリー効率度外視して、バッファ確保の時間も0だと仮定してよいなら、
大きなデータであっても、参照を介してアクセスするよりもコピーした方が速いことが有る。
ただし、その場合にはキャッシュを超えない程度の場合は、という条件が付くことになる。
参照を使った場合、参照を介してのメンバアクセスにはコストがかかるので、
むしろ最初にコピーした方が高速になることがあるんだ。
文字列データや、巨大なバッファを持つようなものはコピーしてはいけない。
それは速度だけじゃなく、無駄なメモリー領域の確保まで必要となるため。
もしメモリー効率度外視して、バッファ確保の時間も0だと仮定してよいなら、
大きなデータであっても、参照を介してアクセスするよりもコピーした方が速いことが有る。
ただし、その場合にはキャッシュを超えない程度の場合は、という条件が付くことになる。
844デフォルトの名無しさん
2020/07/03(金) 17:58:05.10ID:yyYbA8Zx 引数受け渡しがクリティカルになるような状況ならinline化するかipo最適化するだろ
値だろうがconst参照だろうが、最適化されれば違いはなくなる
値だろうがconst参照だろうが、最適化されれば違いはなくなる
845デフォルトの名無しさん
2020/07/03(金) 18:00:47.69ID:36TwtcUk おまえらは王者の風格が足りない。
偽C++使いめ。
偽C++使いめ。
846デフォルトの名無しさん
2020/07/03(金) 18:10:53.48ID:fxIx3skX847デフォルトの名無しさん
2020/07/03(金) 18:16:59.50ID:3KYyPS1e848デフォルトの名無しさん
2020/07/03(金) 18:20:12.77ID:v8523RMt 違いはなくならないこともあるが
普通は無視していい
パフォーマンスが非常に重要なループなら
想像で語らないで実測が基本だし
コンテナのメンバ関数経由でアクセスすることも疑問に思わないと
普通は無視していい
パフォーマンスが非常に重要なループなら
想像で語らないで実測が基本だし
コンテナのメンバ関数経由でアクセスすることも疑問に思わないと
849デフォルトの名無しさん
2020/07/03(金) 18:28:20.50ID:v8523RMt コピーは非常に時間がかかることもある
構造体やクラスのちょっとした変更で後から増えることもある
参照は極端に速度低下することはない
確実にコピーの方が速い時だけコピーにしておいて
不明な時、判断が面倒な時は参照にしておけばいい
私の中の基本ルールが>>782
最適化が必要なら
参照かコピーかだけにとどまらないもっと大がかりな事まで考える
2択だけなんて事はしない
構造体やクラスのちょっとした変更で後から増えることもある
参照は極端に速度低下することはない
確実にコピーの方が速い時だけコピーにしておいて
不明な時、判断が面倒な時は参照にしておけばいい
私の中の基本ルールが>>782
最適化が必要なら
参照かコピーかだけにとどまらないもっと大がかりな事まで考える
2択だけなんて事はしない
850デフォルトの名無しさん
2020/07/03(金) 18:29:04.81ID:v8523RMt 関数パラメータも同じ
851デフォルトの名無しさん
2020/07/03(金) 18:30:44.76ID:33Ox5yaL アホみたいなチューニングが必要なら、そもそも範囲forを使うのやめたら?
直感と異なるかもしれんが、未だ普通のforのほうが早い。
直感と異なるかもしれんが、未だ普通のforのほうが早い。
852デフォルトの名無しさん
2020/07/03(金) 18:38:28.00ID:v8523RMt アホみたいなチューニングってのが意味不明だが
必要ならやらなきゃならん
コンテナ経由ってのがそもそも遅くなる要因
直接ポインタで扱う方が当然速度は期待できる
>>782みたいな基本ルールって
それぞれ自分の中にあると思う
それを外れる最適化がヒツヨウニなるのは極めて稀
稀であったとしても必要な時はある
必要ならやらなきゃならん
コンテナ経由ってのがそもそも遅くなる要因
直接ポインタで扱う方が当然速度は期待できる
>>782みたいな基本ルールって
それぞれ自分の中にあると思う
それを外れる最適化がヒツヨウニなるのは極めて稀
稀であったとしても必要な時はある
853デフォルトの名無しさん
2020/07/03(金) 18:39:47.81ID:yyYbA8Zx inline化してたらコピーが速いなんて事象は起こり得ないだろ
854デフォルトの名無しさん
2020/07/03(金) 18:55:06.29ID:36TwtcUk 社内報にアウトライン化による高速化事例が載ってましたが。
855デフォルトの名無しさん
2020/07/03(金) 18:58:23.70ID:BB9T+E2r856デフォルトの名無しさん
2020/07/03(金) 19:23:59.85ID:O03V1sqG >>840
自称高速化の専門家とやらの妄想は要らんよw
自称高速化の専門家とやらの妄想は要らんよw
857デフォルトの名無しさん
2020/07/03(金) 19:26:52.77ID:O03V1sqG858デフォルトの名無しさん
2020/07/03(金) 19:31:01.09ID:C0RVqI6W 高速化の専門家www
じゃあおれも
じゃあおれも
859デフォルトの名無しさん
2020/07/03(金) 19:40:17.44ID:3fEHgumK 他称なら兎も角、自称の専門家って他のことは分かりませんって意味でしかないよね
860デフォルトの名無しさん
2020/07/03(金) 19:43:24.17ID:v8523RMt 高速化の基本はアルゴリズム、データ構造
その辺の専門家が参照かコピーかみたいな小さな事を気にするのかな?
どんなコンテナとか無視して
その辺の専門家が参照かコピーかみたいな小さな事を気にするのかな?
どんなコンテナとか無視して
861デフォルトの名無しさん
2020/07/03(金) 20:07:32.86ID:36TwtcUk 他に「夏本番、キラキラ☆コーデ」というのも載ってたけど、関係なさそうだったんで読んでません。
862デフォルトの名無しさん
2020/07/03(金) 20:12:17.82ID:v8523RMt863デフォルトの名無しさん
2020/07/03(金) 20:13:28.58ID:36TwtcUk コーディネートではなくコーディングの略ということはもちろんわかっています。
とはいえ、意識の階層が違いすぎて、「あ、これ関係ねーやつだな」って。
とはいえ、意識の階層が違いすぎて、「あ、これ関係ねーやつだな」って。
864デフォルトの名無しさん
2020/07/03(金) 20:14:05.89ID:v8523RMt インラインの反対はアウトラインなのか
865蟻人間 ◆T6xkBnTXz7B0
2020/07/03(金) 20:47:01.49ID:ZXpf7qOR アウトアブライン
out-of-line
out-of-line
866デフォルトの名無しさん
2020/07/03(金) 20:47:30.73ID:36TwtcUk あ、そういえば。
インライン、アウトラインで思い出したんだけど。
むかしツタヤでDVD探してて、カシラモジ・・・カシラモジ・・・ってカ行探してたんだけど無い。
つぎイ行探しても、あれ??無いわ??ってなった。
で、ふとア行見たら・・・アタマモジかよ・・・ありました。
インライン、アウトラインで思い出したんだけど。
むかしツタヤでDVD探してて、カシラモジ・・・カシラモジ・・・ってカ行探してたんだけど無い。
つぎイ行探しても、あれ??無いわ??ってなった。
で、ふとア行見たら・・・アタマモジかよ・・・ありました。
867デフォルトの名無しさん
2020/07/03(金) 20:48:50.40ID:oEOxZVHb 陽ライン
868デフォルトの名無しさん
2020/07/03(金) 21:33:38.36ID:AnL7VPS4 高速化の専門家って当然ハードわかるよな
わかる、つーか皇帝レベル
わかる、つーか皇帝レベル
869デフォルトの名無しさん
2020/07/03(金) 21:58:20.31ID:36TwtcUk >>865
オブライアンはアイルランド系の苗字ですね。
オブライアンはアイルランド系の苗字ですね。
870デフォルトの名無しさん
2020/07/03(金) 22:43:36.42ID:95N/W1ib イ行
871デフォルトの名無しさん
2020/07/03(金) 22:53:21.02ID:36TwtcUk872デフォルトの名無しさん
2020/07/03(金) 23:55:09.00ID:2ewiuNjd873デフォルトの名無しさん
2020/07/04(土) 00:46:19.57ID:KIBH4SNT 「慶應卒の学歴なんていらない」10代起業で成功する子の共通点
https://www.excite.co.jp/news/article/President_35457/
起業で成功するキャリア形成の仕方とは? 元プロサッカー選手で起業家の鈴木啓祐氏に聞いた
https://sogyotecho.jp/career-development/
【アプリ開発で起業】必要な心得とマネタイズ方法のすべて
https://www.dreamgate.gr.jp/contents/column/application-development
学生起業家が開発、「人を軸に本を探すアプリ」とは?読書通じて「考える力」養って
https://newswitch.jp/p/20168
島田商高生がアプリ考案、発表 ICT起業家育成プログラム
https://www.at-s.com/news/article/local/central/730010.html
医師コンビが「治療用アプリ」で起業、禁煙に続き高血圧治療アプリを開発
https://diamond.jp/articles/-/229375
好きが高じて“カレー起業”、キャッシュレス決済アプリ「TOKYO MIX CURRY」の挑戦
https://diamond.jp/articles/-/215868
https://www.excite.co.jp/news/article/President_35457/
起業で成功するキャリア形成の仕方とは? 元プロサッカー選手で起業家の鈴木啓祐氏に聞いた
https://sogyotecho.jp/career-development/
【アプリ開発で起業】必要な心得とマネタイズ方法のすべて
https://www.dreamgate.gr.jp/contents/column/application-development
学生起業家が開発、「人を軸に本を探すアプリ」とは?読書通じて「考える力」養って
https://newswitch.jp/p/20168
島田商高生がアプリ考案、発表 ICT起業家育成プログラム
https://www.at-s.com/news/article/local/central/730010.html
医師コンビが「治療用アプリ」で起業、禁煙に続き高血圧治療アプリを開発
https://diamond.jp/articles/-/229375
好きが高じて“カレー起業”、キャッシュレス決済アプリ「TOKYO MIX CURRY」の挑戦
https://diamond.jp/articles/-/215868
874デフォルトの名無しさん
2020/07/04(土) 09:49:13.31ID:sAcpDZbT >>828
俺もちょいちょい喧嘩してるけど今回関係ないぞ
俺もちょいちょい喧嘩してるけど今回関係ないぞ
875デフォルトの名無しさん
2020/07/04(土) 19:16:06.20ID:rNblEJCx 浅はかな推測が外れまくったという
珍しくも何ともない現象だな
珍しくも何ともない現象だな
876デフォルトの名無しさん
2020/07/05(日) 07:47:21.10ID:3TMy8TU+ std::vectorのstd::shared_ptrを返すメソッドGetHoge()があるのですが、
for (auto e : *GetHoge())
でループすると要素があるにも関わらずループしません
auto t = GetHoge();
for (auto e : *t)
とするとループします
これは何か違いがあるのでしょうか??
MSVCです
for (auto e : *GetHoge())
でループすると要素があるにも関わらずループしません
auto t = GetHoge();
for (auto e : *t)
とするとループします
これは何か違いがあるのでしょうか??
MSVCです
877デフォルトの名無しさん
2020/07/05(日) 09:34:39.04ID:M7eGAoZB msvcならeとかtにカーソル合わせればどういう型になってるかかわかるんじゃないの
878デフォルトの名無しさん
2020/07/05(日) 10:04:45.65ID:cAnzpYmx 無駄にコストを上げる必要は無いと思う
879デフォルトの名無しさん
2020/07/05(日) 11:12:16.02ID:Sc6x6nbH イテレータ型にしなきゃいけないんじゃない?
880デフォルトの名無しさん
2020/07/05(日) 11:57:29.61ID:cm1+apW3 >>876 さんの質問への直接の答えじゃないけど、
typeid(e)::name() とかで auto の解釈を見れば何か分かるんじゃないかな。
特定の場合に auto はどのような型を生成するか、っていう
一般的な情報って言うか規則もどこかで見られるのかも知れんけど。
typeid(e)::name() とかで auto の解釈を見れば何か分かるんじゃないかな。
特定の場合に auto はどのような型を生成するか、っていう
一般的な情報って言うか規則もどこかで見られるのかも知れんけど。
881デフォルトの名無しさん
2020/07/05(日) 13:00:13.16ID:S3hYTv6M >>876
範囲for文の中ではauto&&の参照で範囲オブジェクトを束縛してくれるんだけど
上の場合は束縛されるのは*GetHoge() (=中身のvector)であって、GetHoge()の戻り値そのもの(=shared_ptr)は束縛されない
なのでshared_ptrはループに入る前に破壊されてしまって、参照カウントが0になると中身も破壊されてしまう
下の場合は戻り値のshared_ptrをtで確保してるから大丈夫ってこと
範囲for文の中ではauto&&の参照で範囲オブジェクトを束縛してくれるんだけど
上の場合は束縛されるのは*GetHoge() (=中身のvector)であって、GetHoge()の戻り値そのもの(=shared_ptr)は束縛されない
なのでshared_ptrはループに入る前に破壊されてしまって、参照カウントが0になると中身も破壊されてしまう
下の場合は戻り値のshared_ptrをtで確保してるから大丈夫ってこと
882デフォルトの名無しさん
2020/07/05(日) 13:03:35.81ID:NbYPgepr >>881
なるほど
なるほど
883デフォルトの名無しさん
2020/07/05(日) 13:16:51.38ID:wYW3xnyi C++はますます書いてあることと動作の関係を掴み難くなりつつ
あるな!
あるな!
884デフォルトの名無しさん
2020/07/05(日) 15:02:20.05ID:G8wpw7EE >>876
最初の書き方の場合、GetHoge() の戻り値は、一時オブジェクト。
一時オブジェクトの生存期間は、その部分式を含んだ完全式の終わりまでとされている。
GetHoge()が書いてある場所は、for ブロックの開始時に、最初に一度だけ評価されるが、
完全式としては、その時点で終わっている。
だから、関数戻り値の一時オブジェクトの生存期間は、forブロックに入る直前に終わってしまう。
戻り値の型は、shared_ptr<vector<T>>で、この中身を参照している shared_ptrが全て
消失した時点で中身まで deleteされる。
そのため、forブロックの中では、もはや、vector<T>が削除されてしまっているということらしいね。
2番目の書き方の場合は、shared_ptr が変数 t にコピーされているので、参照カウンタが1つ分残っている。
そのため、それが指している vector<T> のメモリブロックも削除されずに残っている。
というわけで、ループしているのに結果がおかしいというのは分かるが、全くループしない理由は余り分からない。
最初の書き方の場合、GetHoge() の戻り値は、一時オブジェクト。
一時オブジェクトの生存期間は、その部分式を含んだ完全式の終わりまでとされている。
GetHoge()が書いてある場所は、for ブロックの開始時に、最初に一度だけ評価されるが、
完全式としては、その時点で終わっている。
だから、関数戻り値の一時オブジェクトの生存期間は、forブロックに入る直前に終わってしまう。
戻り値の型は、shared_ptr<vector<T>>で、この中身を参照している shared_ptrが全て
消失した時点で中身まで deleteされる。
そのため、forブロックの中では、もはや、vector<T>が削除されてしまっているということらしいね。
2番目の書き方の場合は、shared_ptr が変数 t にコピーされているので、参照カウンタが1つ分残っている。
そのため、それが指している vector<T> のメモリブロックも削除されずに残っている。
というわけで、ループしているのに結果がおかしいというのは分かるが、全くループしない理由は余り分からない。
885デフォルトの名無しさん
2020/07/05(日) 15:10:48.51ID:0KU/lBNo >>883
バカ用じゃないってだけ
バカ用じゃないってだけ
886デフォルトの名無しさん
2020/07/05(日) 15:37:26.46ID:OSntWRwy887デフォルトの名無しさん
2020/07/05(日) 16:19:00.25ID:NbYPgepr 痛レータ
888デフォルトの名無しさん
2020/07/05(日) 16:52:53.28ID:/j2YKhHE >>883
クールパルルパクルリンパ(); ←関数
クールパルルパクルリンパ(); ←関数
889デフォルトの名無しさん
2020/07/05(日) 17:09:54.17ID:S3hYTv6M >>884
ちょっと間違ってる
範囲for文はここで書いてるように「同等な書き換え」がされて、範囲オブジェクトはここの例で言うauto&& __rangeに束縛される
https://en.cppreference.com/w/cpp/language/range-for
そして、__rangeに束縛されたものが一時オブジェクトであれば、参照束縛による寿命の延長でforブロックの終了まで生存する
だからこういうのは問題ないのよ
for(auto a: std::vector<int>{1,2,3})
あと最後に関しては破壊されたvectorを使っちゃってるから未定義動作で何が起きても文句は言えない
メチャメチャな値を取り出そうと、全くループしなかろうとその時の気まぐれよ
>>886
同意。Getという名前は不適切だな
ちょっと間違ってる
範囲for文はここで書いてるように「同等な書き換え」がされて、範囲オブジェクトはここの例で言うauto&& __rangeに束縛される
https://en.cppreference.com/w/cpp/language/range-for
そして、__rangeに束縛されたものが一時オブジェクトであれば、参照束縛による寿命の延長でforブロックの終了まで生存する
だからこういうのは問題ないのよ
for(auto a: std::vector<int>{1,2,3})
あと最後に関しては破壊されたvectorを使っちゃってるから未定義動作で何が起きても文句は言えない
メチャメチャな値を取り出そうと、全くループしなかろうとその時の気まぐれよ
>>886
同意。Getという名前は不適切だな
890デフォルトの名無しさん
2020/07/05(日) 17:14:11.09ID:G8wpw7EE >>89
こんな機能があったとは:
Temporary range expression
If range_expression returns a temporary, its lifetime is extended until the end of the loop, as indicated by binding to the forwarding reference __range, but beware that the lifetime of any temporary within range_expression is not extended.
こんな機能があったとは:
Temporary range expression
If range_expression returns a temporary, its lifetime is extended until the end of the loop, as indicated by binding to the forwarding reference __range, but beware that the lifetime of any temporary within range_expression is not extended.
891デフォルトの名無しさん
2020/07/05(日) 18:01:59.74ID:LGYlGSYG 昔はC++は複雑怪奇、C#はシンプルで分かりやすいって感じだったけれど、
今はC#の方が仕様拡張で複雑になってきて相対的に大差なくなって来てる気がする
今はC#の方が仕様拡張で複雑になってきて相対的に大差なくなって来てる気がする
892デフォルトの名無しさん
2020/07/05(日) 18:04:58.41ID:Sc6x6nbH いろいろ考えたらC++にあるアレが必要になったんだよ
アレだよアレ
わかるだろ
アレだよアレ
わかるだろ
893デフォルトの名無しさん
2020/07/05(日) 18:20:14.04ID:/j2YKhHE 本来標準ライブラリーで済むものまで言語仕様に入ってやがる
それというのも標準ライブラリーがしょぼくてかつ改善が入らん
あっちはだれがやってるんだ
それというのも標準ライブラリーがしょぼくてかつ改善が入らん
あっちはだれがやってるんだ
894デフォルトの名無しさん
2020/07/05(日) 18:31:21.12ID:wYW3xnyi895デフォルトの名無しさん
2020/07/05(日) 19:22:37.86ID:3TMy8TU+ 皆さんはありがとう御座います
GetHogeは実際はEnumHogeで内部でstd::shared_ptr<std::vector>を生成して返すメソッドです
一時的なオブジェクトで書き方の違いで結果が変わるなんて知りませんでした
とりあえず、変数に代入します
GetHogeは実際はEnumHogeで内部でstd::shared_ptr<std::vector>を生成して返すメソッドです
一時的なオブジェクトで書き方の違いで結果が変わるなんて知りませんでした
とりあえず、変数に代入します
896デフォルトの名無しさん
2020/07/05(日) 19:59:22.90ID:G8wpw7EE898デフォルトの名無しさん
2020/07/05(日) 21:12:13.70ID:wYW3xnyi ていうか
>>889
>あと最後に関しては破壊されたvectorを使っちゃってるから未定義動作で何が起きても文句は言えない
>メチャメチャな値を取り出そうと、全くループしなかろうとその時の気まぐれよ
mjd?!
{
auto t = GetHoge();
for (auto e : *t) {
... // (A)
}
// (B)
}
ならt(GetHoge()が返したshared_ptr<vector<T> >は(B)になるまで生存するから
(A)において*tの要素を参照する(auto &&)することは全く問題無いんじゃ…
>>889
>あと最後に関しては破壊されたvectorを使っちゃってるから未定義動作で何が起きても文句は言えない
>メチャメチャな値を取り出そうと、全くループしなかろうとその時の気まぐれよ
mjd?!
{
auto t = GetHoge();
for (auto e : *t) {
... // (A)
}
// (B)
}
ならt(GetHoge()が返したshared_ptr<vector<T> >は(B)になるまで生存するから
(A)において*tの要素を参照する(auto &&)することは全く問題無いんじゃ…
899デフォルトの名無しさん
2020/07/05(日) 21:15:51.36ID:wYW3xnyi 訂正orz,
誤: (B)になるまで生存する
正: 少なくとも(B)になるまでは生存する(参照カウンタが0より大の状態を保つ)
誤: (B)になるまで生存する
正: 少なくとも(B)になるまでは生存する(参照カウンタが0より大の状態を保つ)
900デフォルトの名無しさん
2020/07/05(日) 21:20:48.10ID:0KU/lBNo >>894
イヤミになってない
イヤミになってない
901デフォルトの名無しさん
2020/07/05(日) 21:24:12.71ID:wYW3xnyi902デフォルトの名無しさん
2020/07/05(日) 21:30:37.86ID:kFjTOHVy C++は局所的に動作を想像できない場合が多いのがなぁ。
バカじゃなけりゃマクロ使いまくったCコードも理解できるかというとそうじゃないだろうと。
バカじゃなけりゃマクロ使いまくったCコードも理解できるかというとそうじゃないだろうと。
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★2 [蚤の市★]
- 中国とロシアの爆撃機、日本周辺で共同飛行 [少考さん★]
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 防衛省、中国を完全論破www 「事前通告があったのは海自であって空自ではない」 高市早苗勝利 [175344491]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★4 [597533159]
- お前らマジでセックスしてるんだな
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
- 元統合幕僚長「演習通告の音声は公開されたが、レーダー照射時のものではない」高市政府「www」 [834922174]
- 韓国政府、高市早苗の「竹島領土」発言にブチギレwwwwwwwwwwwwwwww [834922174]
