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


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

C++相談室 part131



1 名前:デフォルトの名無しさん(ワッチョイ 3b96-ov1m) mailto:sage [2017/07/29(土) 11:28:28.97 ID:o30VDF4g0.net]
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part130
mevius.2ch.net/test/read.cgi/tech/1490917669/

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

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

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

998 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 21:28:57.78 ID:iWLkHfj90.net]
右辺値参照なんか、破壊不可オブジェクトをムーブするときくらいしか使わないような。うにーくぽいんたとか。
それ以外は参照でいいし。

999 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 21:45:04.70 ID:Rk3/uNWr0.net]
右辺値参照の有用性を理解できない人間にとってはそもそもC++自体が無用だと思う
さっさと退散しなさい

1000 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 21:56:43.96 ID:bLguG3ky0.net]
ところでなんでそんなに一時オブジエクトを参照しなきゃいけないコードを書くの?
参照元を管理するのが面倒だから? そういう人は初めからGC言語使えばよくね? ということですか?

1001 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:03:17.69 ID:Rk3/uNWr0.net]
なんでとか言われても。。。
壊してもいい一時オブジェクトの場合、特別に効率的な扱いをしたくなるケースなんて山ほどある
それが分からないならC++なんて触らずにGC言語専門でやってればいいと思うよ

1002 名前:はちみつ餃子 mailto:sage [2017/10/09(月) 22:10:35.64 ID:GeS0S50a0.net]
そのあたりはトレードオフなんだよ。
そりゃあ気にせずに済むなら気にしたくないが、気にしなきゃならないときに出来ることがないのはつらいって話で。

1003 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:13:59.60 ID:0USm99MRM.net]
俺もわからん
左辺値参照ではなく右辺値参照を使った方が
良い状況ってどんなの?
あと唐突にガページコレクション出してるけど
何の関係があるの?

1004 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:24:17.86 ID:bLguG3ky0.net]
もしかしてC++で仕事したことないんですか?

1005 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:25:07.16 ID:1ynB1O3m0.net]
そりゃ右辺値を束縛したくてかつconst

1006 名前:左辺値じゃダメな場合だろ []
[ここ壊れてます]



1007 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:43:46.89 ID:0USm99MRM.net]
んー?
結局無いんでしょ?
使うべきシチュが
そうならそう言えばいいのに

1008 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:45:47.51 ID:jvobj8TT0.net]
>>979
classの初期化はどう?

1009 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:51:16.17 ID:UEIAYP2F0.net]
使うシチュエーションがない?
規格決める奴等が無駄にあーだこーだ言ってるだけとか思ってるなら病院に行った方がいいと思う

1010 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:54:00.89 ID:0USm99MRM.net]
初期化はどう?って言われても・・
右辺値参照で初期化するのがベターな状況は
浮かびませんけど

1011 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:55:12.55 ID:0USm99MRM.net]
>>981
と言いつつも
思い浮かばないんでしょ?
じゃあ君もワイと一緒ですね

1012 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:09:59.39 ID:1ynB1O3m0.net]
んん?
右辺値を束縛したい(一時オブジェクトだから左辺値としての実体はない)
けどconst左辺値じゃダメ(中身を変更したいから)
 ↑
これのどこにわかりにくい点があるというのか?
「RVOが保証されるようになったらいらない」という意見なら理解できるが・・・

1013 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:14:06.35 ID:1ynB1O3m0.net]
たとえば swap の実装なんか(素朴には)moveを3回繰り返すんだから
右辺値参照の有用性は明らかだろ

1014 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:16:20.29 ID:7RyTvmhPr.net]
>>973「なんでそんなに一時オブジエクトを参照しなきゃいけないコードを書くの?」
 ↓
>>984「右辺値を束縛したい(一時オブジェクトだから左辺値としての実体はない)けどconst左辺値じゃダメ」
 「これのどこにわかりにくい点があるというのか?」

これがアスペというやつか

1015 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:20:00.09 ID:1ynB1O3m0.net]
>>986

は?
>>979に言ってるんだよ

1016 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:25:56.07 ID:0USm99MRM.net]
>>985
これを右辺値参照Verに書き換えて
利点を示してもらえますか?

void swap(int& a,int& b)
{
int c = a;
a = b;
b = c;
}

void main()
{
int a = 1;
int b = 2;
swap(a,b);
}



1017 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:26:35.20 ID:1ynB1O3m0.net]
>>986
そっちこそ唐突に>>793>>984を唐突に矢印で結び付けてるけど大丈夫か?
お前の脳内の連想なんて誰にもわからないぞ

1018 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:27:28.76 ID:1ynB1O3m0.net]
>>988
利点はない
intだもの

1019 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:31:15.79 ID:0USm99MRM.net]
なら何なら利点があるの?
long long型ならあるの?
もう訳が分からないよ

1020 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:32:58.04 ID:1ynB1O3m0.net]
>>991
コピーコストの大きいコンテナだったら三回も代入したくないだろ?

1021 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:34:48.01 ID:jvobj8TT0.net]
>>982
もう使わないなら右辺値参照版のコンストラクタに渡したほうがいいじゃん
そしたら、コピーが起きなくて済むでしょ?

1022 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:41:18.28 ID:U0LcPFS10.net]
>>986
右辺値を束縛したい文脈ではかわりにconst左辺値で常におkなのでは…(ていうかconstはあってもなくても良い

>>985
T型データのswapは素朴にはT型データのコピー3回+破棄2回ぐらいが生じる
のでわ…

1023 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:48:51.82 ID:bLguG3ky0.net]
swapが頻繁に起こるような用途なら、なんではじめからポインタで管理しないんですか?

1024 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:49:46.71 ID:qIHa8iWG0.net]
一時オブジェクトもglvalueなんだから
T &に束縛できればよかった

1025 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:52:41.96 ID:jvobj8TT0.net]
>>995
ヒープじゃなくてスタックで処理したいから

1026 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:55:42.49 ID:0USm99MRM.net]
結局のところ
右辺値参照はコピーコストを削減出来るのが利点で
それぐらいしか使い道がないってことか

かつ、コピーコンストラクタよりムーブコンストラクタの方が
コストを軽く出来るクラスに限られると

struct a{ void* p; }; // これには効果が期待出来るが
struct b{ int p[65536]; }; // これには効果は期待出来ない

結論としては、やっぱいらねーやこんなのってことだな



1027 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:58:36.68 ID:jvobj8TT0.net]
後者も効果が期待できるよ
そして、コピーコストが削減できるだけってのは正しいが、いるかいらないかは人による

1028 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 00:01:39.19 ID:O5j+wjNW0.net]
>>998

> struct b{ int p[65536]; }; // これには効果は期待出来ない

それはあんたがそんな構造をよく使うんなら正しい
よかったじゃないか、結論が出てw

1029 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 72日 12時間 33分 11秒

1030 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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