正在为学校做一个项目…
我有一个类members
有5个参数。我打算创建一个包含指向对象的指针的向量,我做到了。所以现在我有一个向量membersList
,它有指向不同成员的指针。
每个成员分配一个memberID
。我试图搜索给定memberID
的向量,并通过函数返回成员。我想我应该这样声明:
Members* getMember (string mID);
但是当涉及到实际写函数时,我迷路了。如果mID
是成员ID,我可以将其传递给此函数,然后我将在此函数中使用mID
作为引用点。我如何搜索我的向量并返回这个ID所关联的成员?
谢谢!
编辑:描述到目前为止我所做的工作和解决它的困难:
到目前为止,我有:
Members* Club::getMember (string mID)
{ return mID;}
我知道不是很多。函数定义位于类Club
中,这就是为什么它在那里。我在弄清楚如何获取成员的ID号(将作为参数传递给此函数),然后使用它来搜索指针向量以返回相关成员时遇到了麻烦。当我弄清楚的时候我会更新:)
下面的函数将接受mID并在vector中搜索查找匹配的mID,如果找到匹配,则返回该指针,否则返回0
Members* Club::getMember (string mID)
{
int count = 0;
while(count < membersList.size)
{
if(mID) == (membersList.at(count))->mID)
return membersList.at(count);
}
return 0;
}
您要找的是std::find_if
。
std::find_if( membersList.begin(),
membersList.end(),
[](auto && m){return m->mID==mID;} );
这将返回找到的匹配项的迭代器,如果没有找到匹配项,则返回membersList.end()
。