为什么这里vector的迭代器比较会触发断言?

图片说明

#include<iostream>
#include<initializer_list>
#include<vector>
using namespace std;

void print(vector<string> v,vector<string>::iterator i)
{
    //cout << typeid(i).name()<<endl;
    //cout << typeid(v.end()).name()<<endl;

    //调试后发现此处比较会触发断言
    if (i == v.end())
    {
        return;
    }
    else
    {
        cout << *i << endl;
        print(v, i +1);
    }
}

int main()
{
    vector<string> v = { "hello","goo","test3","test" };
    print(v, v.begin());
    return 0;
}

在第一次比较的时候就触发断言,错误信息vector iterator incompatible

可我传入的不就是同类型的迭代器吗,为啥会不匹配?

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^