【发布时间】:2013-01-19 09:15:21
【问题描述】:
我在玩模板,我想知道为什么我在使用模板时会出现不匹配的函数错误。
/*selection sort*/
template <typename InputIterator, typename T>
void selection_sort(InputIterator first, InputIterator last){
InputIterator min;
for(; first != last - 1; ++first){
min = first;
for(T i = (first + 1); i != last ; ++i)
{
if(*first < *min)
min = i;
}
myswap(*first, *min);
}
}
int main(){
int a[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
vector<int> v(a, a+10);
selection_sort(v.begin(),v.end());
}
【问题讨论】:
-
另请注意,如果您使用的是 C++11,则无需将其复制到向量中;只需使用您标记的答案(rhalbersma's)并使用
std::begin(a)和std::end(a)作为第一个和最后一个迭代器。其余的会自己处理。
标签: c++ sorting templates selection template-argument-deduction