PythonのようにC++のリスト/ベクターを "囲む"ようにしたい。基本的には、リストの終わりからリストの始めに要素を移動したいと思います。私は明示的に新しいリストを作る必要はありません。PythonのようにC++のベクトルをラップする
my_list = [1, 2, 3, 4, 5]
#[1, 2, 3, 4, 5]
q = collections.deque(my_list)
q.rotate(3)
#deque([3, 4, 5, 1, 2])
私はSTLで両端キューに見えたが、私は回転に似て何も表示されません。
Pythonでは、私のようなものを書くことができます。イテレータやこれに類するものでこれを行う簡単な方法があるように思えます。
また、コンテナの長さに対していくつの要素を回転させるかに応じて、 'deque'や' list'は(かなり)良く機能します。 –
@マークB:どのように? 'rotate'は、基本的なコンテナを変更することなく、要素単位で' swap'を介して実装されているようです...? –
Woopsでは、 'rotate'を使うことができず、pop/push関数で手動で実装するか、' list'の場合は 'splice'を実装する必要があります。それを考えると、時期尚早の最適化だと私は確信しています。 –