我有這個簡單的排序程序,它應該適用於矢量Set<int>
-s,它適用於原始類型,我使用一些其他比較函數用於非基元,它運行良好,但是一旦我嘗試比較設置,它崩潰有錯誤:模板問題
error C2782: 'void Sort(Vector<ElemType> &,int (__cdecl *)(type,type))' : template parameter 'type' is ambiguous
我該如何解決這個問題?
template <typename type>
void swap(int &a, int &b){
type tmp =a;
a = b;
b = tmp;
}
template <typename type>
void Sort(Vector<type>& vec,int (cmp) (type,type) = OperatorCmp){
while(true){
for(int i =1; i < v.size(); i++){
if(cmp(v[i-1],v[i]) > 0){
break;
}else{
return;
}
}
int index1 = RandomInteger(0,vec.size()-1);
int index2 = RandomInteger(0,vec.size()-1);
swap(vec[index1],vec[index2]);
}
}
int main(){
Randomize();
Vector<char>a;
Sort(a);
return 0;
}
我不認爲演繹可以在這裏工作。 –
這遠不是**最小**,**完整**例子。 – Barry
@LightnessRacesinOrbit它的確如此。它只是產生不一致的扣除。 – Columbo