假设我有基类 Thing
从那我有Shoes
, Pants
, Shirt
.然后我有一个 vector<Thing*> closet
.
我如何找到多少 Shirt
我的 closet
里有吗?
最佳答案
使用std::count_if
与使用 dynamic downcast 的 lambda确定每个元素是否指向 Shirt
(或其子类型——这也会捕获 TShirt
对象,其中 TShirt
是继承 Shirt
的类):
auto shirts = std::count_if(
std::begin(closet),
std::end(closet),
[] (Thing const *thing) {
return dynamic_cast<Shirt const *>(thing) != nullptr;
}
);
关于c++ - 在容器中查找派生对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43827059/