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 ); //查找