Small-K 2019-11-19 12:50 采纳率: 0%
浏览 134

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

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

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 21:33
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

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

报告相同问题?