欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 14-4迭代器失效

14-4迭代器失效

2025/9/18 16:40:50 来源:https://blog.csdn.net/2402_86622585/article/details/145289856  浏览:    关键词:14-4迭代器失效

(1)插入元素后失效

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector <int> v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(4);
    vector<int>::iterator it=v.begin()+3;
    cout<<*it<<endl;
    return 0;
}

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector <int> v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(4);
    vector<int>::iterator it = v.begin()+3;
    v.insert(it, 8);
    for(it=v.begin();it!=v.end();it++)
    {
        cout<<*it<<endl;
    }
    return 0;
}

#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
vector<int>::iterator it = v.begin()+3;
v.insert(it, 8);//it失效,insert会返回一个新的有效迭代器
cout<<*it<<endl;
return 0;
}
 

#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
vector<int>::iterator it = v.begin()+3;
it=v.insert(it, 8);
cout<<*it<<endl;
return 0;
}
 


(2)删除元素后失效

#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> v1={1,2,3,3,3,4,5,5,5,6};
vector<int>::iterator it;
for(it=v1.begin();it!=v1.end();it++)
{
    if(*it==3)
    v1.erase(it);
}
for(it=v1.begin();it!=v1.end();it++)
{
    cout<<*it<<" ";
}
cout<<endl;
return 0;
}

修改为全部删除3的代码

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> v1 = {1, 2, 3, 3, 3, 4, 5, 5, 5, 6};
    vector<int>::iterator it;
    for (it = v1.begin(); it != v1.end(); ) 
    {
        if (*it == 3)
        {
            it = v1.erase(it);  
        }
        else
        {
            ++it; 
        }
    }
    for (it = v1.begin(); it != v1.end(); ++it)
    {
        cout << *it << " ";
    }
    cout << endl;
    return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词