没有用于调用“ bubbleSort”的匹配函数。 我在同一个.hpp文件中有这两个功能。
template<typename T>
void bubbleSort(std::vector<T> &vec){
T zacasen;
for (int i=0; i<vec.size(); i++) {
for (int j=0; j<vec.size()-1; j++) {
if(vec[j]>vec[j+1]){
zacasen=vec[j];
vec[j]=vec[j+1];
vec[j+1]=zacasen;
}
}
}
}
template < int N, typename T >
void sort(const std::vector<T> &vec){
if(N==1){
bubbleSort(vec);
}else if(N==2){
//quicksort(vec, 0, vec.size());
}
}
答案 0 :(得分:2)
你有
void bubbleSort(std::vector<T> &vec)
但是
void sort(const std::vector<T> &vec)
您不能从bubbleSort(vec)
内部调用sort
,因为const std::vector<T>
不是std::vector<T>
(请注意const
),并且没有隐式转换可能将其变成一个的序列。因此,这里没有可行的函数可供重载解析使用……
为什么您的sort
首先要求一个const
向量?由于它不返回新的向量,因此它可能执行其名称所暗示的唯一操作的方法是重新排序(即修改)其给定向量的内容!?