【C++】コード実装:vectorにおけるremove_if lambda式を使用する高度なテクニック


一、コード説明:
vectorのデータ型はカスタマイズされており、vector内のデータを1つ以上の条件で消去する必要があります.
    struct LabelInfo
    {
        cv::Rect Rectangle;     
        int Area;               
        cv::Point2f Centroid;   
    };

    std::vector LabelsInfo;  

 
二、コード実現:
Areaの規定期間:[minArea,maxArea)に従いvectorLabelsInfo中の期間外のデータをクリアする.
注意:lambdaの値が定数ではなく、外部変数(格納された値)を参照する必要がある場合は、参照する変数名を前のカッコ[]に配置します.複数の変数間をカンマで区切ります.
LabelsInfo.erase(remove_if(LabelsInfo.begin(), LabelsInfo.end(),
                          [minArea, maxArea](LabelInfo n){ return n.Area < minArea || n.Area >= maxArea ; }),
                          LabelsInfo.end());

Lambda表現技術は本当にかっこいいです.