gpt4 book ai didi

c++ - 通过成员数据在 vector 中搜索结构项

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

我对 c++ 很陌生,我正在尝试找到一种方法来搜索结构 vector 以查找具有特定成员数据的结构。

我知道这适用于 vector 中的简单类型

std::find(vector.begin(), vector.end(), item) != vector.end()

但是假设我有一个这样的结构:

struct Friend
{
string name;
string number;
string ID;
};

还有一个像这样的 vector :

vector<Friend> friends;

然后 vector 被 friend 填充。

假设我想搜索具有特定 ID 的 friend ,并找出详细信息。或者从 vector 中删除某个结构。有没有简单的方法来做到这一点?

最佳答案

这可以通过 std::find_if 来完成和一个搜索谓词,如果你有 C++11(或 C++0x)可用,它可以表示为 lambda 函数:

auto pred = [](const Friend & item) {
return item.ID == 42;
};
std::find_if(std::begin(friends), std::end(friends), pred) != std::end(friends);

要将给定的 ID 作为变量使用,您必须在 lambda 表达式中捕获它(在 [...] 内):

auto pred = [id](const Friend & item) {
return item.ID == id;
};
std::find_if(std::begin(friends), std::end(friends), pred) != std::end(friends);

如果没有可用的 C++11,则必须将谓词定义为仿函数(函数对象)。 Remy Lebeau's answer使用这种方法。

要删除符合谓词定义的条件的元素,请使用 remove_if而不是 find_if (其余语法相同)。

更多算法见the STL <algorithm> reference .

关于c++ - 通过成员数据在 vector 中搜索结构项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14225932/

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