C++ vector insert with Iterator 没有像我预期的那样工作

C++ vector insert with Iterator is not working as I expected

C++11,输入为nums = [1,2,3,4,5]

void rotate(vector<int>& nums, int k) {
    nums.insert(nums.begin(), nums.end() - k, nums.end());
}

k = 2 时,我希望这个函数应该使 nums 变为 [4,5,1,2,3,4,5]
但它变成了 [2,3,1,2,3,4,5]
k = 1时,nums为[4,1,2,3,4,5]
但是当k = 4时,nums是[2,3,4,5,1,2,3,4,5],这就是我想要的。
我究竟做错了什么?请帮忙。

您正在使用的 std::vector::insert 重载有一个先决条件,即第二个和第三个参数都不是向量本身的迭代器。

您违反了该先决条件,因此您的程序具有未定义的行为。