前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】代码实现:vector 中 remove_if 使用 lambda 表达式的高级技巧

【C++】代码实现:vector 中 remove_if 使用 lambda 表达式的高级技巧

作者头像
用户7886150
修改2021-02-14 15:10:32
1K0
修改2021-02-14 15:10:32
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: C++ remove()

一、代码说明: 

vector 的数据类型是自定义的,需要根据一个以上的条件对 vector 中的数据进行清除。 

    struct LabelInfo

    {

        cv::Rect Rectangle;     

        int Area;               

        cv::Point2f Centroid;   

    };

    std::vector<LabelInfo> LabelsInfo;  

二、代码实现: 

根据 Area 的规定期间:[minArea,maxArea),把 vector<labelInfo>LabelsInfo 中期间外的数据清除。 

注意:如果 lambda 中的数值不是常数,需要引用外部变量(存储的数值),则要把引用的变量名放到前面的方括号 [ ] 中。多个变量之间用逗号分隔。 

LabelsInfo.erase(remove_if(LabelsInfo.begin(), LabelsInfo.end(),

                          [minArea, maxArea](LabelInfo n){ return n.Area < minArea || n.Area >= maxArea ; }),

                          LabelsInfo.end()); 

lambda 表达式技术真的很酷。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档