下面是SVO源码中LZ读到的一句代码:
close_kfs.sort(boost::bind(&std::pair<FramePtr, double>::second, _1) <boost::bind(&std::pair<FramePtr, double>::second, _2));
分为三部分介绍:pair, boost::bind, sort。
一、pair与make_pair
std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。
pair实质上是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用。
std::pair是二元组类模板,make_pair是创建二元组的便利函数模板。不用函数模板的话,每次创建二元组必须写明模板参数。
std::pair<char, int> a( 'a', 97 );
std::make_pair( 'a', 97 );
pair是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用。
二、sort
排序,默认升序。
用法:sort(begin, end, cmp)
1、sort函数可以三个参数也可以两个参数,必须的头文件#include < algorithm>和using namespace std;
2、它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n)
3、Sort函数有三个参数:(第三个参数可不写)
(1)第一个是要排序的数组的起始地址。
(2)第二个是结束的地址(最后一位要排序的地