std :: listの一部のメソッド、およびおそらく他のSTLコンテナーには、C++11で新しいオーバーロードが追加されています。必要なのはlist::splice()です。1つのメソッドはlist&パラメーターを取り、もう1つのメソッドはlist&&パラメーターを取ります。
違いは何か、どちらを選べばいいのか知りたいのですが。
libstdc ++(GCCコンパイラで使用される標準C ++ライブラリ)の実装を調べましたが、どちらの場合も内部でlist&&バージョンを使用しています。また、C++11仕様はこの問題について何も述べていません。違いを説明せずに2つの方法を提供するだけです。
リスト自体を移動したり、ノードを移動したりすることはありません(ポインターをコピーすることは、ノードをあるリストから別のリストに移動する方法のようです)。なぜそれが重要なのでしょうか。私には1つのアイデアしかありません。おそらく、list &&を使用することは、他のリストをもう必要としないコンパイラへの約束のようなものであり、コンパイラは他のリストを有効に保つ必要がないため、いくつかの操作を節約できます...