c++ vector 删除一个元素 为什么删不掉呢 ??

shinepolo 2011-11-05 11:07:21
我定义了一个vector<CString> vlist;
向里面添加了几个元素
bool MyList::AppendKey(CString key){
if(key==""){
return false;
}else{
if(IsExitsKey(key)){
MyList::v_stringList.push_back(key);
return true;
}else{
cout<<"--------------The key isExits---------------"<<endl;
return false;
}
}
}

然后我删除的时候
cout<<"----------------------Please enter a delete key------------"<<endl;
char temp[1024]={0};
cin>>temp;
CString str = temp;
bool b = ml.DeleteKey(str);
if(b){
cout<<"---------------------DELETE SUCCESS----------------"<<endl;
}else{
cout<<"---------------------DELETE FIELD------------------"<<endl;
}

bool MyList::DeleteKey(CString key){
vector<CString> vlist = MyList::v_stringList;
cout<<key<<endl;
vlist.erase(remove(vlist.begin(),vlist.end(),key),vlist.end());

if(!IsExitsKey(key)){
return true;
}else{
return false;
}
}

屏幕接收的一模一样的值 就是删不掉 是我哪里写错了吗??
...全文
471 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sevancheng 2011-11-05
  • 打赏
  • 举报
回复
pop_back 就出来了啊
shinepolo 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shinepolo 的回复:]

引用 2 楼 adlay 的回复:

vector<CString> vlist = MyList::v_stringList;
这里进行了一次拷贝, 你只删除了你拷贝出来的那一份, 原来的没有删除, 改成引用吧:

vector<CString>&amp; vlist = MyList::v_stringList;


谢谢
[/Quote]

谢谢
shinepolo 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 adlay 的回复:]

vector<CString> vlist = MyList::v_stringList;
这里进行了一次拷贝, 你只删除了你拷贝出来的那一份, 原来的没有删除, 改成引用吧:

vector<CString>& vlist = MyList::v_stringList;
[/Quote]

谢谢
xiaobukuai 2011-11-05
  • 打赏
  • 举报
回复
MyList::AppendKey函数中的if那里,是不是应该为!IsExitsKey(key)?楼主漏掉了!符号,这样的话如果元素存在的话,也执行了push_back操作,那么元素在vector中就有了两份,之后删除时只删掉了第一个,另一个还在,所以看上去没删掉
www_adintr_com 2011-11-05
  • 打赏
  • 举报
回复
vector<CString> vlist = MyList::v_stringList;
这里进行了一次拷贝, 你只删除了你拷贝出来的那一份, 原来的没有删除, 改成引用吧:

vector<CString>& vlist = MyList::v_stringList;
shinepolo 2011-11-05
  • 打赏
  • 举报
回复
自己先顶 初学c++ 对于很多东西不是很明白
会的帮个忙 新手会感激不尽的。。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧