【发布时间】:2018-04-18 04:17:01
【问题描述】:
我已经有几年没有接触过 C++了,所以请多多包涵。 我需要在其他容器的排序向量中进行二进制搜索,比如说对,但无论出于何种原因,我都无法编译几行代码。
所以,对于初学者来说,这编译得很好:
bool cmp_pair( int l, int r )
{
return l < r;
}
main ()
{
vector<int> v;
binary_search( v.begin(), v.end(), 0, cmp_pair );
return 0;
}
但这不是:
bool cmp_pair( const pair<int,int>& l, const pair<int,int>& r )
{
return l.first < r.first;
}
main ()
{
vector< pair< int, int > > v;
binary_search( v.begin(), v.end(), 0, cmp_pair );
return 0;
}
Functor 也无济于事:
struct cmp_pair {
bool operator()( const pair<int,int>& l, const pair<int,int>& r )
{
return l.first < r.first;
}
};
main ()
{
vector< pair< int, int > > v;
binary_search( v.begin(), v.end(), 0, cmp_pair() );
return 0;
}
【问题讨论】:
-
为什么你要传递 0 第三个参数应该是对