我有兩個容器,讓我們說,他們這樣定義:如何在C++ 0x STL中處理缺失的'emplace_range'?
std::vector<std::unique_ptr<int>> a;
std::vector<std::unique_ptr<int>> b;
假設都a
和b
被填充。我想使用移動語義將整個容器a
插入到b
中的特定位置,以便unique_ptr
移動到b
。我們假設i
是一個有效的迭代器,在b
的某處。以下不起作用:
b.insert(i, a.begin(), a.end()); // error: tries to copy, not move, unique_ptrs
是否有另一種STL算法,可以實現這種'插入範圍移動'?我想我需要一種emplace_range
,但VS2010的STL中沒有一個。我不想編寫一個一個一個地插入的循環,因爲每次插入時都會移動向量的全部內容,因此會導致令人討厭的O(n^2)。任何其他選項?
令人敬畏。不知道'make_move_iterator'。 – AshleysBrain 2010-11-15 17:25:01
VS2010確實支持這一點。好。 – 2010-11-15 17:25:02