次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part130
http://mevius.2ch.net/test/read.cgi/tech/1490917669/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1478440682/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C++相談室 part131 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 3b96-ov1m)
2017/07/29(土) 11:28:28.97ID:o30VDF4g0952デフォルトの名無しさん (ワッチョイ aaeb-qWqy)
2017/10/08(日) 13:39:35.60ID:GUxnbDfL0 引数がconst参照=引数の状態を変更しない(てか、できない)という意思表示
に対して
引数が右辺値参照=引数の状態を変更する(しても文句言うな)という意思表示
というのはアリ?
右辺値参照に対する理解が曖昧なんで漠然とよく分からない(何が分かって
ないかも分からないw)んだが、もっと別な意思表示方法もある?
に対して
引数が右辺値参照=引数の状態を変更する(しても文句言うな)という意思表示
というのはアリ?
右辺値参照に対する理解が曖昧なんで漠然とよく分からない(何が分かって
ないかも分からないw)んだが、もっと別な意思表示方法もある?
953デフォルトの名無しさん (ワッチョイ dabd-mvC5)
2017/10/08(日) 16:07:31.29ID:6tf5QjxV0 ほ〜ん>>946の奴はちゃんと動いたわ;
ttps://ideone.com/6lwMOn
ttps://ideone.com/6lwMOn
954デフォルトの名無しさん (ワッチョイ dabd-mvC5)
2017/10/08(日) 16:11:39.00ID:6tf5QjxV0 >>946の奴は要素[i]が内側のwhile()ループからは1回以上アクセスされないから確かにO(N)な気配、
955デフォルトの名無しさん (ワッチョイ b183-wbjw)
2017/10/08(日) 23:25:19.93ID:sIfqyVAH0 右辺値参照はさっぱり意味わからんわ。
956デフォルトの名無しさん (ワッチョイ dabd-mvC5)
2017/10/09(月) 09:00:03.09ID:U0LcPFS10 右辺値参照というのは、関数f()へのT型データの値渡し時に暗黙のうちに行われる(C++03までは無条件に行われていた)
(左辺値) = (右辺値)
という代入処理において、
当該代入処理後、右辺値が関数呼び出し元によって使われなくなることが明白なとき、
左辺値へのコピー後、右辺値をデストラクトする
という処理に暗黙のうちになっていたものを、
右辺値から左辺値への移動
と「も」書けるようにするためのしくみ
Tに効率の良いムーブコンストラクタ(か右辺値参照を引数とする代入演算子)を定義しないとメリットが生じない
ポインタに__restrictを付けるべきかどうか悩まねばならないレベルの人用
C++03でもコンストラ・デストラ呼び出し回数削減の最適化がかかって同じような効果になるケースが多々あるから
そういうのが信用できない神経質な人向け
※ 個人の感想です
(左辺値) = (右辺値)
という代入処理において、
当該代入処理後、右辺値が関数呼び出し元によって使われなくなることが明白なとき、
左辺値へのコピー後、右辺値をデストラクトする
という処理に暗黙のうちになっていたものを、
右辺値から左辺値への移動
と「も」書けるようにするためのしくみ
Tに効率の良いムーブコンストラクタ(か右辺値参照を引数とする代入演算子)を定義しないとメリットが生じない
ポインタに__restrictを付けるべきかどうか悩まねばならないレベルの人用
C++03でもコンストラ・デストラ呼び出し回数削減の最適化がかかって同じような効果になるケースが多々あるから
そういうのが信用できない神経質な人向け
※ 個人の感想です
957デフォルトの名無しさん (オッペケ Sr75-BFoK)
2017/10/09(月) 09:09:56.49ID:Ge9OzZ/lr それで>>952の質問の答えはどうなるんだ?
958デフォルトの名無しさん (ワッチョイ dabd-mvC5)
2017/10/09(月) 09:20:15.73ID:U0LcPFS10 >>957
右辺値参照には一時オブジェクトしか代入できない縛りがあるから_
関数fooを
voiid foo(int&& x)
というバージョンしか定義していないとすると、
int g_x = 10;
foo(g_x);
がビルドが通らないのではないか;
一般的な使用を想定すれば、結局foo(const int& x)も定義必要
C++03までしか使ったこと無いから知らんけど;;
右辺値参照には一時オブジェクトしか代入できない縛りがあるから_
関数fooを
voiid foo(int&& x)
というバージョンしか定義していないとすると、
int g_x = 10;
foo(g_x);
がビルドが通らないのではないか;
一般的な使用を想定すれば、結局foo(const int& x)も定義必要
C++03までしか使ったこと無いから知らんけど;;
959デフォルトの名無しさん (ワントンキン MMea-zCRe)
2017/10/09(月) 09:37:56.10ID:nhJ4ZLVgM960デフォルトの名無しさん (ワッチョイ 95b3-BFoK)
2017/10/09(月) 10:15:14.60ID:53KUOYPr0 必然性の無い実装都合のシンクはクソ
961デフォルトの名無しさん (ワッチョイ b183-wbjw)
2017/10/09(月) 17:26:43.28ID:bLguG3ky0 オブジェクトのコピーとかムーブのためにここまで言語仕様を複雑にしないといけないのか。おれにはさっぱり理解不能だわ。
962デフォルトの名無しさん (ブーイモ MMa1-0mrS)
2017/10/09(月) 17:57:29.04ID:0USm99MRM 俺も右辺値参照はどうかと思う
いらないよね
いらないよね
963デフォルトの名無しさん (ワンミングク MMea-zCRe)
2017/10/09(月) 18:35:18.07ID:3udUYydoM 使わなくてもいいんじゃないか?
使ったことないから複雑に感じるだけで、そこまで複雑でもないよ
使ったことないから複雑に感じるだけで、そこまで複雑でもないよ
964デフォルトの名無しさん (ワッチョイ dab3-Nz6W)
2017/10/09(月) 18:45:40.84ID:UEIAYP2F0 >>961
GCをもたない言語の宿命だから嫌なら性能を犠牲にするかGCを持つ言語を使えばいい
GCをもたない言語の宿命だから嫌なら性能を犠牲にするかGCを持つ言語を使えばいい
965デフォルトの名無しさん (ブーイモ MMde-V8Tw)
2017/10/09(月) 18:56:48.86ID:QjIlXwNcM いやいやスマポがあるじゃない。
中級が多いプロジェクトならスマポ強制のほうが性能上がるんじゃないかと思う。
中級が多いプロジェクトならスマポ強制のほうが性能上がるんじゃないかと思う。
966デフォルトの名無しさん (ワッチョイ da04-RixE)
2017/10/09(月) 18:58:40.39ID:8DJAJvC20 個人的にはC++の言語仕様の暗黒面はほとんど「参照」が絡んでいると思う。
967デフォルトの名無しさん (ワンミングク MMea-zCRe)
2017/10/09(月) 19:50:58.39ID:3udUYydoM ADLとか部分特殊化のマッチとかのほうが、はるかに複雑で暗黒だと思う
968デフォルトの名無しさん (ワッチョイ b183-wbjw)
2017/10/09(月) 20:54:40.71ID:bLguG3ky0969デフォルトの名無しさん (ワッチョイ dab3-Nz6W)
2017/10/09(月) 20:56:32.03ID:UEIAYP2F0970デフォルトの名無しさん (ワッチョイ dae7-XSap)
2017/10/09(月) 20:56:47.16ID:1ynB1O3m0971デフォルトの名無しさん (ワッチョイ 5504-CLk5)
2017/10/09(月) 21:28:57.78ID:iWLkHfj90 右辺値参照なんか、破壊不可オブジェクトをムーブするときくらいしか使わないような。うにーくぽいんたとか。
それ以外は参照でいいし。
それ以外は参照でいいし。
972デフォルトの名無しさん (ワッチョイ 958a-ZNcz)
2017/10/09(月) 21:45:04.70ID:Rk3/uNWr0 右辺値参照の有用性を理解できない人間にとってはそもそもC++自体が無用だと思う
さっさと退散しなさい
さっさと退散しなさい
973デフォルトの名無しさん (ワッチョイ b183-wbjw)
2017/10/09(月) 21:56:43.96ID:bLguG3ky0 ところでなんでそんなに一時オブジエクトを参照しなきゃいけないコードを書くの?
参照元を管理するのが面倒だから? そういう人は初めからGC言語使えばよくね? ということですか?
参照元を管理するのが面倒だから? そういう人は初めからGC言語使えばよくね? ということですか?
974デフォルトの名無しさん (ワッチョイ 958a-ZNcz)
2017/10/09(月) 22:03:17.69ID:Rk3/uNWr0 なんでとか言われても。。。
壊してもいい一時オブジェクトの場合、特別に効率的な扱いをしたくなるケースなんて山ほどある
それが分からないならC++なんて触らずにGC言語専門でやってればいいと思うよ
壊してもいい一時オブジェクトの場合、特別に効率的な扱いをしたくなるケースなんて山ほどある
それが分からないならC++なんて触らずにGC言語専門でやってればいいと思うよ
975はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ae6f-XSap)
2017/10/09(月) 22:10:35.64ID:GeS0S50a0 そのあたりはトレードオフなんだよ。
そりゃあ気にせずに済むなら気にしたくないが、気にしなきゃならないときに出来ることがないのはつらいって話で。
そりゃあ気にせずに済むなら気にしたくないが、気にしなきゃならないときに出来ることがないのはつらいって話で。
976デフォルトの名無しさん (ブーイモ MMa1-0mrS)
2017/10/09(月) 22:13:59.60ID:0USm99MRM 俺もわからん
左辺値参照ではなく右辺値参照を使った方が
良い状況ってどんなの?
あと唐突にガページコレクション出してるけど
何の関係があるの?
左辺値参照ではなく右辺値参照を使った方が
良い状況ってどんなの?
あと唐突にガページコレクション出してるけど
何の関係があるの?
977デフォルトの名無しさん (ワッチョイ b183-wbjw)
2017/10/09(月) 22:24:17.86ID:bLguG3ky0 もしかしてC++で仕事したことないんですか?
978デフォルトの名無しさん (ワッチョイ dae7-XSap)
2017/10/09(月) 22:25:07.16ID:1ynB1O3m0 そりゃ右辺値を束縛したくてかつconst左辺値じゃダメな場合だろ
979デフォルトの名無しさん (ブーイモ MMa1-0mrS)
2017/10/09(月) 22:43:46.89ID:0USm99MRM んー?
結局無いんでしょ?
使うべきシチュが
そうならそう言えばいいのに
結局無いんでしょ?
使うべきシチュが
そうならそう言えばいいのに
980デフォルトの名無しさん (ワッチョイ 8981-zCRe)
2017/10/09(月) 22:45:47.51ID:jvobj8TT0 >>979
classの初期化はどう?
classの初期化はどう?
981デフォルトの名無しさん (ワッチョイ dab3-Nz6W)
2017/10/09(月) 22:51:16.17ID:UEIAYP2F0 使うシチュエーションがない?
規格決める奴等が無駄にあーだこーだ言ってるだけとか思ってるなら病院に行った方がいいと思う
規格決める奴等が無駄にあーだこーだ言ってるだけとか思ってるなら病院に行った方がいいと思う
982デフォルトの名無しさん (ブーイモ MMa1-0mrS)
2017/10/09(月) 22:54:00.89ID:0USm99MRM 初期化はどう?って言われても・・
右辺値参照で初期化するのがベターな状況は
浮かびませんけど
右辺値参照で初期化するのがベターな状況は
浮かびませんけど
983デフォルトの名無しさん (ブーイモ MMa1-0mrS)
2017/10/09(月) 22:55:12.55ID:0USm99MRM984デフォルトの名無しさん (ワッチョイ dae7-XSap)
2017/10/09(月) 23:09:59.39ID:1ynB1O3m0 んん?
右辺値を束縛したい(一時オブジェクトだから左辺値としての実体はない)
けどconst左辺値じゃダメ(中身を変更したいから)
↑
これのどこにわかりにくい点があるというのか?
「RVOが保証されるようになったらいらない」という意見なら理解できるが・・・
右辺値を束縛したい(一時オブジェクトだから左辺値としての実体はない)
けどconst左辺値じゃダメ(中身を変更したいから)
↑
これのどこにわかりにくい点があるというのか?
「RVOが保証されるようになったらいらない」という意見なら理解できるが・・・
985デフォルトの名無しさん (ワッチョイ dae7-XSap)
2017/10/09(月) 23:14:06.35ID:1ynB1O3m0 たとえば swap の実装なんか(素朴には)moveを3回繰り返すんだから
右辺値参照の有用性は明らかだろ
右辺値参照の有用性は明らかだろ
986デフォルトの名無しさん (オッペケ Sr75-BFoK)
2017/10/09(月) 23:16:20.29ID:7RyTvmhPr987デフォルトの名無しさん (ワッチョイ dae7-XSap)
2017/10/09(月) 23:20:00.09ID:1ynB1O3m0988デフォルトの名無しさん (ブーイモ MMa1-0mrS)
2017/10/09(月) 23:25:56.07ID:0USm99MRM >>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);
}
これを右辺値参照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);
}
989デフォルトの名無しさん (ワッチョイ dae7-XSap)
2017/10/09(月) 23:26:35.20ID:1ynB1O3m0990デフォルトの名無しさん (ワッチョイ dae7-XSap)
2017/10/09(月) 23:27:28.76ID:1ynB1O3m0991デフォルトの名無しさん (ブーイモ MMa1-0mrS)
2017/10/09(月) 23:31:15.79ID:0USm99MRM なら何なら利点があるの?
long long型ならあるの?
もう訳が分からないよ
long long型ならあるの?
もう訳が分からないよ
992デフォルトの名無しさん (ワッチョイ dae7-XSap)
2017/10/09(月) 23:32:58.04ID:1ynB1O3m0 >>991
コピーコストの大きいコンテナだったら三回も代入したくないだろ?
コピーコストの大きいコンテナだったら三回も代入したくないだろ?
993デフォルトの名無しさん (ワッチョイ 8981-zCRe)
2017/10/09(月) 23:34:48.01ID:jvobj8TT0994デフォルトの名無しさん (ワッチョイ dabd-mvC5)
2017/10/09(月) 23:41:18.28ID:U0LcPFS10995デフォルトの名無しさん (ワッチョイ b183-wbjw)
2017/10/09(月) 23:48:51.82ID:bLguG3ky0 swapが頻繁に起こるような用途なら、なんではじめからポインタで管理しないんですか?
996デフォルトの名無しさん (ワッチョイ aafb-BFoK)
2017/10/09(月) 23:49:46.71ID:qIHa8iWG0 一時オブジェクトもglvalueなんだから
T &に束縛できればよかった
T &に束縛できればよかった
997デフォルトの名無しさん (ワッチョイ 8981-zCRe)
2017/10/09(月) 23:52:41.96ID:jvobj8TT0 >>995
ヒープじゃなくてスタックで処理したいから
ヒープじゃなくてスタックで処理したいから
998デフォルトの名無しさん (ブーイモ MMa1-0mrS)
2017/10/09(月) 23:55:42.49ID:0USm99MRM 結局のところ
右辺値参照はコピーコストを削減出来るのが利点で
それぐらいしか使い道がないってことか
かつ、コピーコンストラクタよりムーブコンストラクタの方が
コストを軽く出来るクラスに限られると
struct a{ void* p; }; // これには効果が期待出来るが
struct b{ int p[65536]; }; // これには効果は期待出来ない
結論としては、やっぱいらねーやこんなのってことだな
右辺値参照はコピーコストを削減出来るのが利点で
それぐらいしか使い道がないってことか
かつ、コピーコンストラクタよりムーブコンストラクタの方が
コストを軽く出来るクラスに限られると
struct a{ void* p; }; // これには効果が期待出来るが
struct b{ int p[65536]; }; // これには効果は期待出来ない
結論としては、やっぱいらねーやこんなのってことだな
999デフォルトの名無しさん (ワッチョイ 8981-zCRe)
2017/10/09(月) 23:58:36.68ID:jvobj8TT0 後者も効果が期待できるよ
そして、コピーコストが削減できるだけってのは正しいが、いるかいらないかは人による
そして、コピーコストが削減できるだけってのは正しいが、いるかいらないかは人による
1000デフォルトの名無しさん (ワッチョイ dae7-XSap)
2017/10/10(火) 00:01:39.19ID:O5j+wjNW010011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 72日 12時間 33分 11秒
新しいスレッドを立ててください。
life time: 72日 12時間 33分 11秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★4 [蚤の市★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★5 [七波羅探題★]
- 【速報】 米トランプ政権声明 「中国が台湾を奪おうとする、いかなる試みも阻止する」 中国「レッドラインだ」 ★2 [お断り★]
- 元プロ野球選手・堂上隼人(43)を20代女性2人へのわいせつ未遂容疑で8回目の逮捕…これまでの被害者は10代・20代の女性11人に [Anonymous★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 【高校野球】なぜ『7回制』は反対多数でも止まらないか… 高野連が「全員の命」守るために貫く伝統より改革の姿勢 [冬月記者★]
- 【速報】旧統一教会会長が辞任 [459590647]
- 【高市悲報】自衛隊「実は事前に現場海域で中国軍から空母での発着訓練をすると通告がありました」え…?😨😨 [931948549]
- 【高市速報】中国「このままだと日本が先制攻撃してくる」 [583597859]
- AI「その画像AIだぞ」AIぼく「そうなんだ助かる」
- 「ワイとベロチュー」or「女の子とスカトロセックス」
- 【悲報】山里亮太(南海キャンディーズ)さん [329329848]
