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]
When k = 1, nums is [4,1,2,3,4,5]
but when k = 4, nums is [2,3,4,5,1,2,3,4,5],這就是我想要的。
我究竟做錯了什么?請幫忙。
uj5u.com熱心網友回復:
您正在使用的std::vector::insert多載有一個先決條件,即第二個和第三個引數都不是向量本身的迭代器。
您違反了該前提條件,因此您的程式具有未定義的行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/437752.html
