c语言vector+erase用法,vector与map的erase()函数详细解析

本文详细探讨了C++中vector和map的元素删除操作,特别是迭代器在删除过程中的使用。强调了在vector中,为了防止迭代器失效,应当使用it=v.erase(it)的方式更新迭代器,而在map中可以安全地使用it1++.同时,展示了如何在循环中正确删除vector和map的元素,确保程序的稳定运行。
摘要由CSDN通过智能技术生成

vector循环删除的时候,erase(it)会返回下一个迭代器的地址,保险的做法是赋值给it 即 it= erase(it)

这是vector的内部机制所造成的,所以对vector进行erase的时候特别注意迭代器是否会失效!

map则可以直接erase(it++);

vector和map都不能将it++写在for循环中,而在循环体内erase(it)!

void main()

{

vector v;

v.push_back(1);

v.push_back(2);

v.push_back(4);

v.push_back(3);

v.push_back(6);

v.push_back(5);

cout << v.size() <

vector::iterator it;

for(it = v.begin();it != v.end();)

{

if(*it % 2 == 0)

//v.erase(it++);

//it = v.erase(it);

v.erase(it);

else

it++;

}

cout << v.size() <

for(it = v.begin();it != v.end();it++)

{

cout << *it << " ";

}

// map的完美删除

map m;

m[1] = 1;

m[2] = 2;

m[3] = 4;

m[4] = 3;

m[5] = 5;

m[6] = 6;

cout <

map::iterator it1;

for(it1 = m.begin(); it1!=m.end();)

{

if(it1->second % 2 == 0)

m.erase(it1++);

else

it1++;

}

cout <

cout <

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值