gpt4 book ai didi

c++ - 在对的 vector 中按关键字查找对

转载 作者:IT老高 更新时间:2023-10-28 22:18:02 28 4
gpt4 key购买 nike

我想在成对的 vector 上调用 find 函数。在调用 find 函数时,我只有搜索的键。

我的理解是我需要将一个函数作为参数传递给 find 来为我进行比较,但我找不到合适的例子。

我在与 map 容器相反的 vector 中对对进行排序的原因是因为我希望能够在填充过程之后按值对对进行排序

    vector< pair<string, int> > sortList;
vector< pair<string, int> >::iterator it;

for(int i=0; i < Users.size(); i++)
{
it = find( sortList.begin(), sortList.end(), findVal(Users.userName) );

//Item exists in map
if( it != sortList.end())
{
//increment key in map
it->second++;
}
//Item does not exist
else
{
//Not found, insert in map
sortList.push_back( pair<string,int>(Users.userName, 1) );
}
}

//Sort the list

//Output

findVal 上的实现对我来说是一个模糊的领域。我也愿意接受更好的实现逻辑的方法。

最佳答案

你不需要使用find,请使用find_if,这是链接:http://www.cplusplus.com/reference/algorithm/find_if/

auto it = std::find_if( sortList.begin(), sortList.end(),
[&User](const std::pair<std::string, int>& element){ return element.first == User.name;} );

如果您在 C++11 之前使用 C++ 标准,那么以后,您将需要一个函数而不是 lambda:

bool isEqual(const std::pair<std::string, int>& element)
{
return element.first == User.name;
}
it = std::find_if( sortList.begin(), sortList.end(), isEqual );

关于c++ - 在对的 vector 中按关键字查找对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22676301/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com