semanticsといっても過言ではない[要出典]ので調べてみた。ペーパーバックこの商品を含むブログを見るmoveってなんすか。横文字わかんないっすC++プログラマならコピーとかは知ってるよね。ムーブはコピーなんかよりも大抵の場合もっと効率いいらしいよ。え、よくわからないって?例えばだ、今日は8月31日だけど夏休みの宿題全く手を付けていない。する?友達の宿題写す一択だよなぁ。プリント50ページとかあってさ、全部手書きで写すのって大変じゃない?タイムリミットは1日だよ?!無理じゃんー!コピー機使えたらいいけどさぁ、そんなのバレるしインク代かかるし解決にはならない。そんな時ムーブが役立つ!!なんと!友達の宿題を奪い、名前欄のみ変更して、自分のものにする。semantics最高!!!そう、C++でコピーする時ってでかいオブジェクトだと時間かかるしパフォーマンス的に痛い。ポインタ使ってゴニョゴニョするのもいいけど正直めんどくさい。いう時こそmoveを使おう!友達は宿題を失うけどまああんなヤツ最初からどうでもいいよなぁ。1つだけ気をつけるべき部分はmove元のオブジェクトの操作は未定義なので極力ほっとくこと。友達の宿題奪ったんだから友達はもう宿題を持っていないはず、操作できるわけないっしょ?まとめmove最高、夏休みの宿題いちいちコピーしてられっか。小さめな宿題ならコピーでもいいけども。友達の宿題を自分のものにするとか最悪だなマジで。moveなんとなくわかってけどさぁ、どう使えばいいんだよSTLに入ってるコンテナとかは既にmoveに対応してるみたいですね。自分のオブジェクトをmoveに対応させたかったらmoveコンストラクタの定義とmove代入演算子のオーバーロードが必要。「はぁ、めんどくせぇなー」って思うかもしれないがC++11ではどうやら何も定義しなければ勝手に以下のものを必要に応じてデフォルトで定義してくれるらしい:コンストラクタコピーコンストラクタコピー代入演算子ムーブコンストラクタムーブ代入演算子デストラクタただここで初見殺しがある。コンストラクタを自分で定義した場合上記のようにコンストラクタをデフォルトで定義されず君のコンストラクタを使うようになる。上記のコピーやムーブやデストラクタ関連のいずれかを定義した場合、全てデフォルトで定義されなくなる。いうのを使ってるけど、これはどうしてもデフォルトの動作をしてほしいって場合書けばいいというもの。default;ってすればいいのさ。default;で勝手にやってもらったほうが絶対可読性高い上にミスも減るってばっちゃが言ってた。delete;ってすればよいのじゃ。ムーブコンストラクタの&&ってなんだよ!!見たこと無いぞあーそれね。受け取りますよ!ってこと。なに、TOEIC満点だけどそんな単語知らないって?やれやれ...C++で使う変数は色々と分類されるけどすっっごく簡単に大まかにわけるとlvalueとrvalueの2つです。部分のようなオブジェクト。部分や関数の返り値のようなそのうち破壊されるような一時オブジェクト。constなrvalueはまず使うことはないだろうムーブはこの2つ目のrvalueを利用してるのですごく効率的なのさー。lCat);が呼ばれる。rCat);が呼ばれる。なんかようわからんが、std::moveっていう関数使えばmoveしてくれるんか?違うんだよなぁ...これがまた初見殺し。std::moveは実際にはrvalueへキャストしてるに過ぎない。上のコードのコメントにも書いてあるだろう?「std::move(tama)はrvalue」ってさ。std::moveっていう関数名すごい紛らわしいから本当は別のにしたいけどここまで来ちゃったしstd::moveのままになってしまったらしい。lvalueかconstでないrvalueかの2択なのでlvalueのほうの関数を呼び出すなるほど。ややこしくなってきたからはやいとこまとめてくれ大きいオブジェクトを関数に渡したりするときはコピーではなくムーブしたほうがパフォーマンス向上が望めるかもしれない自分のクラスでムーブしたい場合はデフォルトのムーブコンストラクタやムーブ代入演算子を利用するか自分で定義しようムーブはrvalueにしか使えない。関数の引数に&&をつければrvalueを受け取れる。STLのコンテナはもうmoveに対応しているし、例えばstd::vectorのemplace_back()関数などにrvalue渡すことができるrvalueに変換したい場合はstd::moveしよう。いうかっこいいやつで最適化してくれるのでそういう時ムーブしてくれるらしい。2015の12月24日の記事...2014-12-27とりあえずメモ帳作ったよ2014年も残りわずかですが皆さんいかがお過ごしでしょーか。はてなブログPro株式会社はてなでWebアプリケーションエンジニアやっています。Traceyさんが渋谷で撮ったMVが良いので見てくれMacのVSCodeのバックアップディレクトリにファイルを置いたらVSCode起動のたびに同じファイルが開かれて鬱陶しい月別アーカイブ検索はてなブログをはじめよう!stefafafanさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。