从满足特定条件的std::列表中获取最小项 我正在寻找一种解决C++中的列表迭代/排序问题的函数方法。
考虑以下类型的元素列表:从满足特定条件的std::列表中获取最小项 我正在寻找一种解决C++中的列表迭代/排序问题的函数方法。,c++,c++11,functional-programming,C++,C++11,Functional Programming,考虑以下类型的元素列表: struct SomeElement { /* ... functions and and additional data omitted ... */ int weight; } 存在std::list或事件std::vector。我想查询该列表以返回以下元素: 满足给定条件,即,MyPredicate(someElement)=true,以及 具有满足条件的所有对象的权重属性的最小值 我的列表有任意数量的元素,零到全部可能满足给定的条件 我通常知道
struct SomeElement
{
/* ... functions and and additional data omitted ... */
int weight;
}
存在std::list
或事件std::vector
。我想查询该列表以返回以下元素:
MyPredicate(someElement)=true
,以及权重
属性的最小值std::find_if
,选择满足条件的第一个对象,或者简单地使用for
循环对其进行循环,等等。但是,我想用函数的方式解决这个问题
< >我有没有办法在C++中使用列表谓词、生成器表达式和列表理解?我想写一些大致如下的内容:
myList
.where((SomeElement const& e) { MyPredicate(e); })
.min([](SomeElement const& a, SomeElement const& b) { a.weight < b.weight; });
myList
.where((SomeElement const&e){MyPredicate(e);})
.min([](某些元素常量和a,某些元素常量和b){a.weight
是否可以使用C++的STL或Boost库?您谈论的是列表,但似乎是以树的形式查询结构(至少是这样)。“考虑列表…”与“属于已知父对象的所有对象”相比。请澄清。我认为有一个SomeElement的列表,SomeElement有一个指向对象的父元素,即“父元素”与列表无关。旁白:今天我第二次看到有人提议对容器进行排序,以便找到最小的元素。我完全被搞糊涂了。我想看看一个适当配置的
min\u元素
线性扫描怎么会做不到你想要的。除非问题是个谎言,在给定前提条件的情况下只找到最小元素不是实际问题。@WhozCraig同意。使用lambda,在对重量进行排序之前检查父项
,这应该是所需的全部。否则可能是OP想要的。