c++迭代器基础问题

第一个for循环直接被跳过,第二个for循环报错,我感觉自己的迭代器写的没问题呀


#include <iostream>
#include <vector> 

using namespace std;

int main() {
    int N, M;
    cin >> N >> M;
    vector<int> ivec;
    int temp = 0;
    for (int i = 0; i != N; ++i) {
        cin >> temp;
        ivec.push_back(temp);
    }
    for (auto i = ivec.begin() + N; i != ivec.end(); ++i) {
        cout << *i << " ";
    }
    for (auto i = ivec.begin(); i != ivec.begin() - N; ++i) {
        cout << *i;
        if (i != ivec.begin() - N - 1) {
            cout << " ";
        }
    }
    return 0;
}

都循环反掉了,从begin向后循环,哪有begin+N向后的?