1

最初の 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です。どうすれば自分の仕事を達成できますか?

4

1 に答える 1

4

memmove任意のオブジェクト ( など) ではなく、バイトをコピーしますint。したがって、正しいバイト数を で計算する必要があります2 * sizeof(int)

しかし、より良い方法は使用することstd::copy_nです:

std::copy_n(v.begin(), 2, v.begin() + 3);
于 2017-01-02T11:25:09.970 に答える