我试图使用排序算法对向量的元素进行排序。
这是我的代码片段。
比较器
struct comparator
{
bool operator() ( OptVector<pair<int, pair<CgpPop*,CgpPop*> > >::iterator it1, OptVector<pair<int, pair<CgpPop*,CgpPop*> > >::iterator it2)
{
return ( ((*it1).first) < ((*it2).first));
}
} o_comparator;
我的向量
这里OptVector是一个向量的包装器,它的行为与标准C++向量相同。
OptVector< pair<int, pair<CgpPop*,CgpPop*> > > pll_units;
调用排序算法
sort<OptVector< pair<int, pair<CgpPop*,CgpPop*> > >::iterator > (pll_units.begin(), pll_units.end(), o_comparator);
但编译器抛出以下错误
/calm/svr/sql/generic/stlinclude/stl/_algo.c: In function âconst _Tp& _STL::__median(const _Tp&, const _Tp&, const _Tp&, _Compare) [with _Tp = _STL::pair<int, _STL::pair<CgpPop*, CgpPop*> >, _Compare = comparator]â:
/calm/svr/sql/generic/stlinclude/stl/_algo.c:820: instantiated from âvoid _STL::__introsort_loop(_RandomAccessIter, _RandomAccessIter, _Tp*, _Size, _Compare) [with _RandomAccessIter = _STL::pair<int, _STL::pair<CgpPop*, CgpPop*> >*, _Tp = _STL::pair<int, _STL::pair<CgpPop*, CgpPop*> >, _Size = long int, _Compare = comparator]â
/calm/svr/sql/generic/stlinclude/stl/_algo.c:841: instantiated from âvoid _STL::sort(_RandomAccessIter, _RandomAccessIter, _Compare) [with _RandomAccessIter = _STL::pair<int, _STL::pair<CgpPop*, CgpPop*> >*, _Compare = comparator]â
/calm/svr/sql/generic/source/codegen/cgpop.cpp:1249: instantiated from here
/calm/svr/sql/generic/stlinclude/stl/_algo.c:78: error: no match for call to â(comparator) (const _STL::pair<int, _STL::pair<CgpPop*, CgpPop*> >&, const _STL::pair<int, _STL::pair<CgpPop*, CgpPop*> >&)â
/calm/svr/sql/generic/source/codegen/cgpop.cpp:1192: note: candidates are: bool comparator::operator()(_STL::pair<int, _STL::pair<CgpPop*, CgpPop*> >*, _STL::pair<int, _STL::pair<CgpPop*, CgpPop*> >*)
/calm/svr/sql/generic/stlinclude/stl/_algo.c:79: error: no match for call to â(comparator) (const _STL::pair<int, _STL::pair<CgpPop*, CgpPop*> >&, const _STL::pair<int, _STL::pair<CgpPop*, CgpPop*> >&)â
/calm/svr/sql/generic/source/codegen/cgpop.cpp:1192: note: candidates are: bool comparator::operator()(_STL::pair<int, _STL::pair<CgpPop*, CgpPop*> >*, _STL::pair<int, _STL::pair<CgpPop*, CgpPop*> >*)
谁能告诉我我错在哪里吗?