ちょっと必要になったので、書いてみました。
vector
中のbefore
番目にある要素を、after
番目に移動します。
#include <vector> #include <utility> // 要素の位置を移動させる template <class T> void move_position(std::vector<T>& v, std::size_t before, std::size_t after) { T x = std::move(v[before]); v.erase(v.begin() + before); v.insert(v.begin() + after, std::move(x)); } #include <boost/detail/lightweight_test.hpp> #include <boost/range/algorithm/equal.hpp> int main() { { std::vector<int> v = {1, 2, 3}; move_position(v, 2, 0); const std::vector<int> expected = {3, 1, 2}; BOOST_TEST(boost::equal(v, expected)); } { std::vector<int> v = {1, 2 ,3}; move_position(v, 0, 2); const std::vector<int> expected = {2, 3, 1}; BOOST_TEST(boost::equal(v, expected)); } { std::vector<int> v = {1, 2, 3}; move_position(v, 1, 2); const std::vector<int> expected = {1, 3, 2}; BOOST_TEST(boost::equal(v, expected)); } return boost::report_errors(); }