关于C++ std list remove()的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C++ std list remove()的问题相关的知识,希望对你有一定的参考价值。
你好,关于C++ std list remove()函数的一个问题向您请教,请大侠不吝指教,谢谢!
#include<iostream>
#include<string>
#include<algorithm>
#include<list>
using namespace std;
class M_BOX
public:
string m_name;
string m_num;
M_BOX(string &i_name,string &i_num)m_name=i_name;m_num=i_num;
;
M_BOX setData()
string s_name;
string s_num;
cout<<"name: >>";
cin>>s_name;
cout<<"num : >>";
cin>>s_num;
cout<<"data updated!"<<endl<<endl;
return M_BOX(s_name,s_num);
void disPlay(list<M_BOX>& m_box_list)
list<M_BOX>::const_iterator i;
for(i=m_box_list.begin();i!=m_box_list.end();++i)
cout<<"name="<<i->m_name;cout<<"\t\tnum ="<<i->m_num<<endl<<endl;
int main()
list <M_BOX> m_box_list;
m_box_list.push_back(setData());
disPlay(m_box_list);
m_box_list.push_back(setData());
disPlay(m_box_list);
m_box_list.push_back(setData());
disPlay(m_box_list);
cout<<"there is/are "<<m_box_list.size()<<" element(s).\n";
string s;
cout<<"remove an element."<<endl;
cin>>s;
cout<<"after remove()..."<<endl;
m_box_list.remove(M_BOX(s,"")); //<<<<<<--------------------------------------为何这里无法通过编译呢???
disPlay(m_box_list);
cout<<"there is/are "<<m_box_list.size()<<" element(s).\n";
return 0;
list.remove的时候,需要查找List中是否有相同的M_BOX,所以应该补上==操作符函数。 参考技术A m_box_list.remove(M_BOX(s,""));改为m_box_list.remove(M_BOX(s,string("")))const char*是无法转换为string&的,;
或者把M_BOX的构造函数改为M_BOX(string &i_name,string i_num)m_name=i_name;m_num=i_num;
以上是关于关于C++ std list remove()的问题的主要内容,如果未能解决你的问题,请参考以下文章
std::list::remove 方法是不是调用每个已删除元素的析构函数?