私はstd::list
例えば持っています。int 付き:9 10 8 25 70 75 30 14 80
10
すべての要素を要素の後よりも少なく移動したいsome_position_number
。= 5
. 移動されたオブジェクトの最初の順序は重要であり、移動後の最初と同じでなければなりません。
言い換えれば、最後にsome_position_number
要素を受け取る必要がfalse
あり、それらの後にtrue
最初の例のように: 10 25 70 75 30 9 * 8 * 14 80
2 番目のイニシャル: 9 3 8 25 70 75 30 14 80
2 番目の結果: 10 25 70 75 30 9 * 3 * 8 14 80
3 番目のイニシャル: 25 70 75 30 14 9 3 8 80
3 番目の結果: 25 70 75 30 14 9 3 8 80
(最初は既に 5 です)
4 初期: 3 4 1 2 3 9 3 8 80
4 結果: 9 3 8 80 3 4 1 2 3
(このようなもの) ここでsome_position_number
は、しきい値として使用するか80 3 4 1 2 3 9 3 8
、受け入れる必要があるようですが、end() と無限ループをチェックする必要があるようです?
list
不必要なオブジェクトの作成と消去を避けるために、おそらく追加なしで、この最も効果的な方法を行うにはどうすればよいでしょうか? 実際のアプリでは int はありませんstd::list
が、オブジェクトです。多分std::スプライス?新しい位置を見つけて std::splice ですべての要素を移動するよりも、移動する必要があるオブジェクトを何らかの方法で選択します。