在C#中,如果我有一个对象列表(例如List myObjectList),则可以通过以下方式获取该列表的子集:

anotherMyObjectList = myObjectList.Where(x => x.isSomething()).Select(x => x).ToList();

假设我不想使用第三方C++ LINQ库(仅标准库,也许使用boost),那么在C++中最好的方法是什么?为我要在其中执行此操作的每个实例编写一个函数将很容易,但是最好知道存在哪种框架来执行这种类型的操作。

如果答案在C++ 98,C++ 0x或C++ 11中不同,则最好知道不同之处。

最佳答案

在C++ 11中,使用boost可以执行以下操作:

// assumming myObjectList is a vector of someObj type
std::vector<someObj> myObjectList = { ... };
auto result = myObjectList | boost::adaptors::filtered([](const someObj& x) { return x.isSomething(); });
std::vector<someObj> anotherMyObjectList(boost::begin(result), boost::end(result));

07-24 09:52