20180517 迭代器

下列代码的输出为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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( 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 ;
}
100 300 300 500
100 300 500
100 500
程序错误

答案B 错选C
erase()一次只删除一个元素,返回一个迭代器指针,指向下一个元素。本题中,删除第一个300后,itor指向其后一个300,再通过itor++就指向了500.
vector 的 erase函数 删除指定位置的元素时, 返回值是一个迭代器,指向删除元素下一个元素。删除第一个300后,itor指向其后的300,然后执行itor++,指向了500
 
 

猜你喜欢

转载自www.cnblogs.com/kxzh/p/9106342.html