本文主要是介绍一道笔试题:vector::erase(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
vector::erase():从指定容器删除指定位置的元素或某段范围内的元素 vector::erase()方法有两种重载形式
如下:
iterator erase( iterator _Where);
iterator erase( iterator _First, iterator _Last);
如果是删除指定位置的元素时:
返回值是一个迭代器,指向删除元素下一个元素;
如果是删除某范围内的元素时:返回值也表示一个迭代器,指向最后一个删除元素的下一个元素;
#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; } |
下面这个代码输出的是() :100 300 300 500
在本题中,当 *itor==300成立时,删除第一个值为300的元素,同时itor指向下一个元素(即是第二个值为300的元素),
在for(;;itor++)执行itor,itor指向第三个值为300的元素,进入下一个循环
进入循环满足*itor==300,重复上面的过程,执行完循环,itor执行值为500的元素。
所有整个过程中,只删除了2个值为300的元素。 只删除了第一个和第三个300。
这篇关于一道笔试题:vector::erase()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!