2017-05-07 44 views

回答

5

使用std::count_if與使用dynamic downcast的λ,以確定是否每一個元素指向一個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; 
    } 
); 
+0

假設我想找到'm_size'> = 40的'Pants',我該如何將這個函數合併到lambda中? –

+1

@HichigayaHachiman完全一樣。 ''(Thing const * thing){auto pants = dynamic_cast (thing); return(pants!= nullptr)&&(pants-> m_size> = 40); }' – cdhowie