C++ 在容器中查找派生对象
假设我有基本类C++ 在容器中查找派生对象,c++,oop,vector,C++,Oop,Vector,假设我有基本类东西,从中我有鞋,裤子,衬衫。然后我有一个向量柜 如何找到我的衣柜中有多少衬衫?与lambda一起使用,lambda使用a来确定每个元素是否指向衬衫(或其子类型--这也将捕获TShirt对象,其中TShirt是继承衬衫的类): auto shirts=std::count\u如果( 标准::开始(壁橱), 标准::末端(壁橱), [](事物常数*事物){ 返回动态_cast(thing)!=nullptr; } ); 与lambda一起使用,lambda使用a来确定每个元素是否指向
东西
,从中我有鞋
,裤子
,衬衫
。然后我有一个向量柜
如何找到我的衣柜中有多少衬衫
?与lambda一起使用,lambda使用a来确定每个元素是否指向衬衫
(或其子类型--这也将捕获TShirt
对象,其中TShirt
是继承衬衫
的类):
auto shirts=std::count\u如果(
标准::开始(壁橱),
标准::末端(壁橱),
[](事物常数*事物){
返回动态_cast(thing)!=nullptr;
}
);
与lambda一起使用,lambda使用a来确定每个元素是否指向衬衫
(或其子类型——这也将捕获TShirt
对象,其中TShirt
是继承衬衫
的类):
auto shirts=std::count\u如果(
标准::开始(壁橱),
标准::末端(壁橱),
[](事物常数*事物){
返回动态_cast(thing)!=nullptr;
}
);
假设我想找到尺寸为m_
>=40的裤子,我如何将该功能整合到lambda中?@HichigayaHachiman的方法完全相同<代码>[](Thing const*Thing){auto pants=dynamic_cast(Thing);return(pants!=nullptr)和&(pants->m_size>=40)}
假设我想找到裤子,它们是m_size
=40,我如何将该函数合并到lambda中?@HichigayaHachiman完全相同的方式<代码>[](Thing const*Thing){auto pants=dynamic_cast(Thing);return(pants!=nullptr)&&(pants->m_size>=40);}
auto shirts = std::count_if(
std::begin(closet),
std::end(closet),
[] (Thing const *thing) {
return dynamic_cast<Shirt const *>(thing) != nullptr;
}
);