查找和删除矢量中的值
问题描述:
class Catalog
{
// string StationTitle;
string StationLocation;
public:
string StationTitle;
Catalog()
{
StationTitle = "";
StationLocation = "";
}
Catalog(string Title, string Location)
{
StationTitle = Title;
StationLocation = Location
}
void SetTitle(string Title) { StationTitle = Title; }
void SetLocation(string Location) { StationLocation = Location; }
string GetTitle() { return StationTitle; }
string GetLocation() { return StationLocation; }
};
class StationList
{
vector<Catalog> List; //create the vector
vector<Catalog>::iterator Transit;
public:
void Fill();
void Remove();
void Show();
};
void StationList::Remove()
{
string ToDelete;
cout << "Enter title to delete: " << endl;
cin >> ToDelete;
for(Transit = List.begin() ; Transit !=List.end() ; Transit++)
{
if(Transit->StationTitle() == ToDelete)
{
List.erase(Transit); //line 145
return;
}
}
}
我希望用户输入StationTitle并让程序找到标题并将其删除(如果找到)。这是我迄今为止所提出的。
它给了我一个编译错误:chief.cpp:145:错误:不匹配呼叫'(std :: string)()'查找和删除矢量中的值
答
你的错误是在这里:
if(Transit->StationTitle() == ToDelete)
更改该行这样的:
if(Transit->StationTitle == ToDelete)
OR
if(Transit->GetTitle() == ToDelete)
您可以添加声明交通? – JoshD 2010-10-05 01:23:10
这是最好的使用擦除删除成语这种事情。这可以将您的八行缩减为一行,并且更容易扫描代码并找出它的功能。 – 2010-10-05 01:24:43
@詹姆斯麦克奈利斯:我可能会误解你,但是因为匹配只是元素的一部分,所以如果不重载平等或提供不同的比较函数,remove函数将不起作用。当然,这是一个吸引人的选择。 – JoshD 2010-10-05 01:28:25