在C ++中搜索指针向量

时间:2015-08-17 02:30:06

标签: c++

为学校做项目......

我有一个包含5个参数的班级members。我打算创建一个包含指向对象的向量,我做了。所以现在我有一个向量membersList,它有指向不同成员的指针。

为每位成员分配一个memberID。我正在尝试搜索给定memberID的向量,并通过函数返回成员。我想我应该声明:

Members* getMember (string mID);

但是当谈到实际编写函数时,我迷失了。如果mID是成员ID,我可以将其传递给此函数,然后我将mID在此函数中用作参考点。如何搜索向量并返回与此ID相关联的成员?

谢谢!

编辑:工作描述我“做得太远而难以尝试解决它:

到目前为止,我有:

Members* Club::getMember (string mID)
{ return mID;}
我知道的并不多。函数定义位于类Club中,这就是为什么它在那里。我无法弄清楚如何获取成员的ID号(将作为参数传递给此函数),然后使用它来搜索指针向量以返回关联的成员。当我弄清楚时,我会更新:)

2 个答案:

答案 0 :(得分:0)

下面的函数将接受mID并在向量中搜索以找到匹配的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;
}

答案 1 :(得分:0)

您正在寻找std::find_if

std::find_if( membersList.begin(),
              membersList.end(),
              [](auto && m){return m->mID==mID;} );

这将返回找到的匹配的迭代器,如果找不到匹配则返回membersList.end()