C++中怎么删除vector中的一个元素

给个例子吧,谢谢

第1个回答  2018-12-13

方法如下:

(1)public final synchronized void removeElement(Object obj)

从向量中删除obj。若有多个存在,则从向量头开始试,删除找到的第一个与obj相同的向量成员。

(2)public final synchronized void removeAllElement()

删除向量中所有的对象。

(3)public final synchronized void removeElementlAt(int index)

删除index所指的地方的对象。

Vector类 是在 java 中可以实现自动增长的对象数组,vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。

扩展资料

vector的查询搜索功能

(1)public final int indexOf(Object obj)

从向量头开始搜索obj,返回所遇到的第一个obj对应的下标,若不存在此obj,返回-1。

(2)public final synchronized int indexOf(Object obj,int index)

从index所表示的下标处开始搜索obj。

(3)public final int lastIndexOf(Object obj)

从向量尾部开始逆向搜索obj。

(4)public final synchronized int lastIndexOf(Object obj,int index)

从index所表示的下标处由尾至头逆向搜索obj。

(5)public final synchronized Object firstElement()

获取向量对象中的首个obj。

(6)public final synchronized Object lastElement()

获取向量对象中的最后一个obj。

参考资料:百度百科——vector

本回答被网友采纳
第2个回答  2018-12-05

vector::erase():从指定容器删除指定位置的元素或某段范围内的元素。

vector::erase()方法有两种重载形式:

1、iterator erase(iterator _Where),v1.erase( v1.begin( ) ):删除v1中的第一个元素,vec.erase(vec.begin()+2):删除第3个元素。

2、iterator erase(iterator _First,iterator _Last),删除v1.begin() + 1和v1.begin() + 2两个元素,

v1.erase(v1.begin() + 1, v1.begin() + 3)。

3、vec.erase(vec.begin()+i,vec.begin()+j):删除区间[i,j-1]。区间从0开始,插入元素:vec.insert(vec.begin()+i,a),在第i+1个元素前面插入a。

扩展资料

1、如果是删除指定位置的元素时:返回值是一个迭代器,指向删除元素下一个元素;如果是删除某范围内的元素时:返回值也表示一个迭代器,指向最后一个删除元素的下一个元素。

2、v1.erase( v1.begin( ) );//删除v1中的第一个元素,erase的原理,当调用erase()后Iter迭代器就失效了,变成了一野指针。

3、这个时候,赋一个新的迭代器:for(Iter = v1.begin(); Iter != v1.end(); Iter++) ,当erase后,旧的容器会被重新整理成一个新的容器。



本回答被网友采纳
第3个回答  2016-04-15

1、可以用erase方法删除vector指定位置的元素。
2、例程:

#include <vector>
#include <iostream>
using namespace std;
int main(int argc, char** argv){
    std::vector<int> vec;
    for(int i=0;i<100;i++)    vec.push_back(i);
    printf("10:%d\n",vec[10]);
    printf("size:%d\n",vec.size());
    printf("**********************************\n");
    std::vector<int>::iterator it = vec.begin()+10;
    vec.erase(it);
    printf("10:%d\n",vec[10]);
    printf("size:%d\n",vec.size());
    return 0;
}

第4个回答  推荐于2018-02-26
#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()本回答被提问者和网友采纳
第5个回答  2013-06-04
#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()
相似回答