C++ 使用vector 出现"vector iterator not incrementable"或"vector iterator + offset out of range"错误的情况

本文讨论了在C++编程中使用vector时可能会遇到的两种迭代器错误:'vector iterator not incrementable'和'vector iterator + offset out of range'。错误通常发生在迭代器操作不当,如在容器调整大小或删除元素后未正确更新迭代器。示例代码展示了如何在执行set_difference和erase操作时避免这些错误,强调了确保迭代器有效性和正确使用erase返回值的重要性。
摘要由CSDN通过智能技术生成

测试代码1: 

vector<CString> g_vtStr1;
vector<CString> g_vtStr2;
vector<CString> g_vtStr3;

  g_vtStr1.push_back(_T("Test1"));

    g_vtStr1.push_back(_T("Test2"));
    g_vtStr1.push_back(_T("Test3"));
    g_vtStr1.push_back(_T("Test0"));
    sort(g_vtStr1.begin(),g_vtStr1.end());

    g_vtStr2.push_back(_T("data1"));
    g_vtStr2.push_back(_T("data2"));

    g_vtStr3.resize(g_vtStr2.size());
//如果g_vtStr3 的  size要小于 g_vtStr1-g_vtStr2的差值 下面会报错奔溃,因此必须保证g_vtStr3 的size大小足够容纳差值

   vector<CString>::const_iterator it = set_difference(g_vtStr1.begin(),g_vtStr1.end(),g_vtStr2.begin(),g_vtStr2.end(),g_vtStr3.begin());



测试代码2:

    for (vector<CString>::const_iterator i = g_vtSt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值