gpt4 book ai didi

c++ - 如何定义查找函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:42 30 4
gpt4 key购买 nike

试图为我的 vector 定义一个查找函数,因为 vector 包含多个数据;它是结构的 vector

我正在输入一个 ID,并尝试在我的表中搜索它并找到它的索引(如果该 ID 已经存在)

所以我在这里有声明:

vector<Employee> Table;
vector<Employee>::iterator It;
vector<Employee>::iterator find_It;

//Table has these values
//Table.ID, Table.ch1, Table.ch2

我正在尝试在此处查找 ID:

cin >> update_ID;
find_It = find(Table.begin(), Table.end(), update_ID);

有没有办法用变量 update_ID 进行查找?

我试过这样做:

find_It = find(Table.begin(), Table.end(), (*It).update_ID;

但显然我的 vector Employee 没有名为 update_ID 的数据成员

我想做的另一个选择是创建我自己的查找函数,我对如何定义它有点困惑

我想返回 Table.ID = update_ID 的 ID 的索引

我应该把什么作为返回类型和值参数?是吗

returntype find( Iterator, Iterator, update ID)
{
for (vector<Employee>::iterator myit = Table.begin(), Table.end(), myit++)
{
if update_ID == Table.ID
{
return myit;
}
}
return myit
}

最佳答案

C++ 标准库自带 a set of find functions .

您正在寻找 find_if,它采用指定比较的仿函数。

// a functor taking the update_ID you 
// are looking for as an argument in the constructor
struct myfind {
myfind(int needle) : needle(needle) {}

int needle;
bool operator()(const Employee& x) {
return x.ID == needle;
}
};

// use as
int update_ID = 23;
std::find_if(begin(Table), end(Table), myfind(update_ID));

您还可以使用 lambda:

int id;
std::find_if(begin(Table), end(Table),
[=](const Employee& x) { return x.update_ID == id; });

关于c++ - 如何定义查找函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13734511/

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