2016-03-01 96 views
0

我有std :: std :: unique_ptr-s的向量。如何將一個元素移動到另一個地方而不改變其他元素的相對順序?將std :: unique_ptr移動到std :: vector中的新位置

+0

如果你不得不這樣做很多,那麼你可能想考慮一個不同的容器類型。 –

+0

謝謝,但我需要在極少數情況下只做 – Rem

回答

3

您可以使用<algorithm>標題中的std::rotate。如果你想要的元素向前移動,則可以使用:

std::rotate(elem_iter, elem_iter + 1, elem_dest + 1); 

,如果你想向後移動,你可以使用:

std::rotate(elem_dest, elem_iter, elem_iter + 1); 

其中elem_iter是一個迭代器指向的元素你想要移動,並且elem_dest是指向要移動它的位置的迭代器。顧名思義,std::rotate將旋轉範圍內的元素,導致範圍的第一部分與第二部分交換。在你的情況下,其中一個部分是你想要移動的元素,另一個部分是它和目標之間的所有元素。

相關問題