所以我有一套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/