zl程序教程

您现在的位置是:首页 >  其他

当前栏目

下面这个代码输出的是()

输出代码 这个 下面
2023-09-14 09:07:04 时间
#include <iostream>       
#include <vector>
using namespace std;
int main(void)
{
	vector<int>array;
	array.push_back(100);
	array.push_back(300);
	array.push_back(300);
	array.push_back(300);
	array.push_back(300);
	array.push_back(500);
	vector<int>::iterator itor;
	for(itor=array.begin();itor!=array.end();itor++)
	{
		if(*itor==300)
		{
			itor=array.erase(itor);
		}
	}
	for(itor=array.begin();itor!=array.end();itor++)
	{
			cout<<*itor<<"";
	}
  return 0;
}

在这里插入图片描述

vector::erase():从指定容器删除指定位置的元素或某段范围内的元素 vector::erase()方法有两种重载形式 如下:
iterator erase( iterator _Where); iterator erase( iterator _First,
iterator _Last); 如果是删除指定位置的元素时: 返回值是一个迭代器,指向删除元素下一个元素;
如果是删除某范围内的元素时:返回值也表示一个迭代器,指向最后一个删除元素的下一个元素;

在本题中,当 itor==300成立时,删除第一个值为300的元素,同时itor指向下一个元素(即是第二个值为300的元素),
在for(;;itor++)执行itor,itor指向第三个值为300的元素,进入下一个循环
进入循环满足
itor==300,重复上面的过程,执行完循环,itor执行值为500的元素。 所有整个过程中,只删除了2个值为300的元素。