如何在STL容器中查找特定对象
我想在 std::list 中找到一个特定对象,其中该对象的属性满足输入参数。
我找到了一个使用一元谓词与 find(.) 或 find_if(.) 的解决方案,但我需要一个二元函数。
为什么我不能让迭代器成为对象的引用(如java)并通过引用检查字段?有没有办法在不使用 find/find_if... 的情况下做到这一点
I want to find a specific object in a std::list where the object's attribute meets an input argument.
I found a solution using a unary predicate with find(.) or find_if(.) but in I need a binary function.
Why can't I just let the iterator be the reference of the object (like java) and check the field via the reference? Is there a way to do that without using find/find_if...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不 – 你确实需要一个一元谓词 – 毕竟,
find_if
函数只与一个对象(列表中的当前对象)进行比较)。您的谓词需要知道要与哪个属性值进行比较:现在您可以调用
find_if
:你可以。但绝对不清楚你的意思是什么。只需迭代列表即可。
No – you do need a unary predicate – after all, the
find_if
function only compares with one object (the current object in the list). Your predicate needs to know which attribute value to compare with:Now you can invoke
find_if
:You can. But it’s absolutely not clear what you mean by this. Just iterate over the list.
是的,你可以这样做:
但是,当然,如果你一次只检查一个对象,我不明白为什么你需要一个二元谓词。
Yes, you can do that:
But of course, I can't see why you'd need a binary predicate if you're just checking one object at a time.