gpt4 book ai didi

c++ - 如何在 STL 容器中查找特定对象

转载 作者:太空宇宙 更新时间:2023-11-04 14:51:08 25 4
gpt4 key购买 nike

我想在 std::list 中找到一个特定对象,其中对象的属性满足输入参数。

我找到了一个使用带有 find(.) 或 find_if(.) 的一元谓词的解决方案,但我需要一个二元函数。

为什么我不能只让迭代器成为对象的引用(如java)并通过引用检查字段?有没有办法不使用 find/find_if...

最佳答案

I found a solution using a unary predicate with find(.) or find_if(.) but in I need a binary function.

不——你确实需要一个一元谓词——毕竟,find_if 函数只比较一个对象(当前对象在列表)。您的谓词需要知道要与哪个属性值进行比较:

struct compare_with {
int attr_value;
compare_with(int attr_value) : attr_value(attr_value) { }

bool operator ()(your_object const& obj) const { return obj.attr == attr_value; }
};

现在你可以调用find_if:

result = find_if(your_list.begin(), your_list.end(), compare_with(some_value));

Why can't I just let the iterator be the reference of the object (like java) and check the field via the reference?

可以。但绝对不清楚你的意思。只需遍历列表即可。

关于c++ - 如何在 STL 容器中查找特定对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4891919/

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