Rn2*_*2dy 0 c++ containers std
我想在std :: list中找到一个特定的对象,其中对象的属性符合输入参数.
我找到了一个使用带有find(.)或find_if(.)的一元谓词的解决方案,但我需要一个二进制函数.
为什么我不能让迭代器成为对象的引用(比如java)并通过引用检查字段?有没有办法不使用find/find_if来做到这一点...
我找到了一个使用带有find(.)或find_if(.)的一元谓词的解决方案,但我需要一个二进制函数.
不 - 你确实需要一元谓词 - 毕竟,该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; }
};
Run Code Online (Sandbox Code Playgroud)
现在你可以调用find_if:
result = find_if(your_list.begin(), your_list.end(), compare_with(some_value));
Run Code Online (Sandbox Code Playgroud)
为什么我不能让迭代器成为对象的引用(比如java)并通过引用检查字段?
您可以.但是,你绝对不清楚这是什么意思.只需遍历列表即可.