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

给个例子吧,谢谢... 给个例子吧,谢谢 展开
 我来答
机智的煎饼
高粉答主

2018-12-13 · 每个回答都超有意思的
知道答主
回答量:0
采纳率:100%
帮助的人:0
展开全部

方法如下:

(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

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lifeads213sad
2018-12-05 · TA获得超过2123个赞
知道答主
回答量:25
采纳率:0%
帮助的人:3339
展开全部

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后,旧的容器会被重新整理成一个新的容器。



本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
2016-04-15 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:882万
展开全部

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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liujun_7177
推荐于2018-02-26 · TA获得超过649个赞
知道小有建树答主
回答量:459
采纳率:0%
帮助的人:636万
展开全部
#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()
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小童鞋_成er
2013-06-04 · 知道合伙人数码行家
小童鞋_成er
知道合伙人数码行家
采纳数:4650 获赞数:22879
主要从事J2EE工作,热爱Java,用心讨论技术,共同进步。

向TA提问 私信TA
展开全部
#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()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式