我是 STL 的新手。我正在尝试编写一个以向量迭代器为参数的例程。即,我需要传递vector.begin() 和vector.end()。无法弄清楚为什么我的代码不起作用:
template<typename T, typename Iter> void VectorQuickSort(Iter itL, Iter itR){
const int nSize = (itR - itL);
if(nSize<2) return;
Iter iBeginning(itL), iEnd(itR);
--itR;
T tPivot = *( itL + (nSize/2) );
while( itL <= itR ){
while( *itL < tPivot ) ++itL;
while( *itR > tPivot ) --itR;
if( itL <= itR ){
std::iter_swap(itL,itR);
++itL;
--itR;
}
}
VectorQuickSort(iBeginning,itR);
VectorQuickSort(itL,iEnd);
}
在main()
我简单地调用VectorQuickSort(vInput.begin(),vInput.end());
. 编译器告诉我error: no instance of function template "VectorQuickSort" matches the argument list
。任何帮助表示赞赏:)
编辑:作为对可能尝试使用上述代码的人的警告:即使您应用提供的答案,排序算法本身仍然存在问题。我未能将正常工作的 C 版本翻译成 STL 风格。