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
重载有一个先决条件,即第二个和第三个参数都不是向量本身的迭代器。
您违反了该先决条件,因此您的程序具有未定义的行为。
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
重载有一个先决条件,即第二个和第三个参数都不是向量本身的迭代器。
您违反了该先决条件,因此您的程序具有未定义的行为。