タイトルの通り、C++においてあるコンテナの要素を1つだけ別のコンテナに移動させる方法を探しています。
std::moveを使い、自分でこのようなコードを記述したのですが、Aの要素が1つだけの時にイテレータでの
範囲外アクセスによるランタイムエラーが発生しました。
// (main関数部分等は省略します)
int Current = 0; // 実際には任意の数
std::vector<unsigned int> A,B;
B.reserve(B.size() + 1);
// やりたいこと:A[0]の要素をBの終端へ移動する
std::move(A.begin()+Current,A.begin()+Current+1,B.end());
// ランタイムエラー: "vector iterator + offset out of range"
交換できることが確認できませんでした。
この状況を改善したいのですが、方法が分からなくなってしまったので、こちらに投稿させていただきました。
こうすればいい、または別の方法がいい、というのがありましたらご教授いただけると嬉しいです。
なお、実行環境はWin7,Microsoft Visual C++ 2010 expressです。