为什么这里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

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

c++
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问