#include <iostream>
int main()
{
std::cout<<"Hello World\n";
while(int i = 0){
std::cout<<"test....\n"<<std::endl;
}
std::cout<<"test end....\n"<<std::endl;
return 0;
}
2
#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<<"\n";
}
return 0;
}
输出的结果会是什么呢?
需要注意erase()函数,vector::erase():从指定容器删除指定位置的元素或某段范围内的元素
讲解:也就是会出现当删除第一个300元素的时候,iteractor迭代器会跳到第二个值为300的位置,然后在for循环里面又++一次了,所以迭代器就跳到了第三个300元素的位置,然后这第三个300删除了,然后又跳过第四个300,到了500,最后结束循环
所以最后的结果是:
100
300(第二个)
300(第四个)
500
需要把循环的规则给改一下
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
vector<int>array;
array.push_back(100);
array.