最初の 2 つの要素をベクトル内の指定された位置に移動したいのですがmemmove
、次のコードで使用すると結果が正しくありません。
vector<int> v{1, 2, 3, 4, 0};
memmove(&(v[3]), &(v[0]), 2);
そうすることによる結果は ですが1, 2, 3, 1, 0
、期待値は1, 2, 3, 1, 2
です。どうすれば自分の仕事を達成できますか?
memmove
任意のオブジェクト ( など) ではなく、バイトをコピーしますint
。したがって、正しいバイト数を で計算する必要があります2 * sizeof(int)
。
しかし、より良い方法は使用することstd::copy_n
です:
std::copy_n(v.begin(), 2, v.begin() + 3);