gpt4 book ai didi

c++ - 查找与存储在 vector 中的对象对应的迭代器

转载 作者:行者123 更新时间:2023-11-28 03:22:29 25 4
gpt4 key购买 nike

我有一个 vector v,其中包含结构类型为 A 的对象。现在我需要为存储在该 vector 中的特定对象找到迭代器。例如:

  struct a
{
};
vector<a> v;
struct temp; //initialized

现在如果我要用

find(v.begin(),v.end(), temp);

然后编译器生成错误,指出运算符 '==' 不匹配。

获取与 vector 中的对象对应的迭代器的任何变通方法?

最佳答案

您必须为您的类提供一个bool operator==(const a& lhs, const a& rhs) 相等运算符,或者将一个比较仿函数传递给std::find_if:

struct FindHelper
{
FindHelper(const a& elem) : elem_(elem) {}
bool operator()(const a& obj) const
{
// implement equality logic here using elem_ and obj
}
const a& elem_;
};

vector<a> v;
a temp;
auto it = std::find_if(v.begin(), v.end(), FindHelper(temp));

或者,在 c++11 中,您可以使用 lambda 函数代替仿函数。

auto it = std::find_if(v.begin(), v.end(),  
[&temp](const a& elem) { /* implement logic here */ });

关于c++ - 查找与存储在 vector 中的对象对应的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15056041/

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