C++ STL find和find_if

本文介绍了C++ STL中的find_if和find函数在VINS-Mono源码分析中的应用。在功能上,find_if适用于查找包含指针的容器中满足特定条件的元素,而find则用于常规数值或字符的比较。使用find_if时,可以传入Lambda表达式作为谓词,从容器的begin到end,返回第一个使谓词返回true的元素的迭代器。若未找到,返回end()。要使用这两个函数,需包含<algorithm>头文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LZ在VINS-Mono中看源代码时,vins_estimator/src/feature_manager.cpp的addFeatureCheckParallax()查看视差判断是否为关键帧函数中,寻找featuer list中是否之前出现过当前特征点的feature_id,用到了find_if函数。

auto it = find_if(feature.begin(), feature.end(), [feature_id](const FeaturePerId &it)
                          {
            return it.feature_id == feature_id;
                          });

第三个参数是Lambda表达式,意为:遍历feature list 容器看看之前是否出现过当前的feature_id。


find则更偏向于普通的数值或者字符比较

find_if针对查找的对象中包含指针需要进行比较


首先从简单的find寻找某个数值开始,其返回的是指向这个数值的迭代器。

注意:需要加入#include <algorithm>头文件

#include <vector>
#include <algorithm>// 注意!!!
#include <iostream>
using namespace std;

int main( )
{
    vector<int> L;
    L.push_back( 1 );
    L.push_back( 2 );
    L.push_back( 3 );
    L.push_back( 4 );
    L.push_back( 5 );

    vector<int>::iterator result = find( L.begin( ), L.end( ), 3 ); //查找
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值