vector中删除一个元素
来源:互联网 发布:淘宝客收费公式 编辑:程序博客网 时间:2024/05/21 21:44
例如:
class classA
{
public:
int e;
}
vector<classA>; class_vector;
如果要删除第三个,似乎只能按着下面这个方式进行
class_vector.erase(&class_vector[2]);
这种方法太麻烦了比如我要删最后一个
class_vector.erase(&class_vector[class_vector.size()-1]);
------------------------------------
>> 如果要删除第三个,似乎只能按着下面这个方式进行
>> class_vector.erase(&class_vector[2]);
&class_vector[2] 的类型是指针,而上述 vector 的 erase 成员函数要求的参数类型是 iterator,两者的类型并不一定兼容,所以你的上述用法对于大多数的编译器来说都是不成立的。
根据 vector 的特点,删除其中间的元素没有什么捷径(不提供按下标删除元素的方法。对于 vector 一般要尽量避免删除中间的元素)。不过,对于删除最后一个元素,vector 提供了非常简洁的方式,并且实现效率也非常高,这就是 pop_back () 操作。
----------------------------------------------
#include <vector>
using namespace std;
void main(void)
{
vector<int> array;
array.push_back(1);
array.push_back(2);
array.push_back(3);
array.push_back(4);
array.push_back(5);
vector<int>::iterator itr = array.begin();
while (itr != array.end)
{
if (*itr == 3)array.erase(itr);//删除值为3的元素
++itr;
}
}
//若是最后一个可用array.pop_back()
-------------------
删除所有偶数项,并打印出删除的项
1. vector/queue
正确方法1:
void erase(vector<int>&v)
{
for(vector<int>::iterator vi=v.begin();vi!=v.end();)
{
if(*vi% 2== 0)
{
cout <<"Erasing " <<*vi << endl;
vi = v.erase(vi);
}
else++vi;
}
}
正确方法2:
void erase2(vector<int>&v)
{
for(vector<int>::reverse_iterator ri=v.rbegin();ri!=v.rend();)
{
if(*ri% 2== 0)
{
cout <<"Erasing " <<*ri << endl;
v.erase((++ri).base()); //erase()函数期待的是正向iterator,故而这里要调
//用base()函数将逆向iterator转换为正向的
}
else++ri;
}
}
2.map/list
正确方法
void erase(map<int,int>&m)
{
for(map<int,int>::iterator mi=m.begin();mi!=m.end();)
{
if(mi->second% 2== 0)
{
cout <<"Erasing " << mi->second<< endl;
m.erase(mi++);
}
else++mi;
}
}
- vector中删除一个元素
- 在vector中删除一个元素
- STL中vector删除一个元素
- 在vector中删除一个元素(转)
- vector容器中删除元素
- 删除vector中重复元素
- vector 中删除指定元素
- vector::erase() vector中如何删除元素?
- vector 删除制定的一个元素
- vector中特定元素的删除
- (转)vector中使用erase删除元素
- vector中使用erase删除元素
- vector中特定元素的删除
- STL中Vector元素的删除
- vector容器中如何删除元素
- 删除vector中元素高效的方法
- vector中使用erase删除元素
- 在vector中通过下标删除元素
- Android /assets
- poll函数源码详细分析
- jrtp安装测试笔记
- Ubuntu12.04的vbox中安装xp遇到问题
- BitBl
- vector中删除一个元素
- C# DllImport的用法
- xml的四种解析
- nfs 安装
- 百度排名
- A9双核和ARM+DSP双核是怎么回事?
- struct内存布局
- 线程优先级SetThreadPriority的使用
- android 用camera实现3D效果