我正在寻找一种解决我在C ++中使用的列表迭代/排序问题的功能方法。
考虑以下类型的元素列表:
struct SomeElement
{
/* ... functions and and additional data omitted ... */
int weight;
}
存在std::list<SomeElement>
或事件std::vector<SomeElement>
。我想查询该列表以返回以下元素:
MyPredicate(someElement) == true
和weight
属性的最小值。我的列表中包含任意数量的元素,并且所有元素都可以满足给定条件。
我知道如何一般地做到这一点,例如,我可以对列表进行排序,然后使用std::find_if
选择满足条件的第一个对象,或者使用for
循环简单地循环它,但是,我想以功能的方式解决问题。
有没有办法可以在C ++中使用列表谓词,生成器表达式和列表推导?我想写下以下内容:
myList
.where((SomeElement const& e) { MyPredicate(e); })
.min([](SomeElement const& a, SomeElement const& b) { a.weight < b.weight; });
是否可以使用C ++的STL或Boost库?