所以我有一套pairs<string ,string>
而且我想使用find()搜索将在该对的“第一个”字符串中的单个字符串,然后,如果我首先找到该字符串,则想从该函数返回第二个字符串。

我目前的尝试是

myList::iterator i;

i = theList.find(make_pair(realName, "*"));

return i->second;

最佳答案

C++ 11是否可以接受?

auto it = find_if(theList.begin(), theList.end(),
    [&](const pair<string, string>& val) -> bool {
        return val.first == realName;
    });

return it->second;

或在C++ 03中,首先定义一个函子:
struct MatchFirst
{
        MatchFirst(const string& realName) : realName(realName) {}

        bool operator()(const pair<string, string>& val) {
                return val.first == realName;
        }

        const string& realName;
};

然后这样称呼它:
myList::iterator it = find_if(a.begin(), a.end(), MatchFirst(realName));
return it->second;

这只会返回第一个比赛,但是从您的问题来看,这就是您所期望的。

关于c++ - C++设置搜索对元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9843278/

10-13 03:37