c++ - How to handle missing 'emplace_range' in C++0x STL? -
i have 2 containers, let's they're defined this:
std::vector<std::unique_ptr<int>> a; std::vector<std::unique_ptr<int>> b;
assume both a
, b
populated. want insert entire container a
particular location in b
, using move-semantics unique_ptr
s move b
. let's assume i
valid iterator somewhere in b
. following doesn't work:
b.insert(i, a.begin(), a.end()); // error: tries copy, not move, unique_ptrs
is there stl algorithm can achieve 'insert-range-by-moving'? guess need sort of emplace_range
, there isn't 1 in vs2010's stl. don't want write loop inserts 1 one, since end nasty o(n^2) due shifting entire contents of vector every time inserts. other options?
auto a_begin = std::make_move_iterator(a.begin()); auto a_end = std::make_move_iterator(a.end()); b.insert(i, a_begin, a_end);
Comments
Post a Comment