C++ 如何在没有重复代码的情况下创建模板版本以获取数组开始和结束(使用T*和它)?

C++ 如何在没有重复代码的情况下创建模板版本以获取数组开始和结束(使用T*和它)?,c++,visual-c++,C++,Visual C++,当我创建一个函数,它将采用数组的开始和结束(比方说创建一个快速排序),我必须创建一个采用T*的版本: template<typename T> void quick_sort(T *_beg, T *_end){...} 效果很好。。。大多数时候,但有时我会出错 can't dereference out of range vector iterator 用于尝试取消引用end迭代器(使用visual studio编译器) 如何安全地开发这两个版本,避免重复代码?指针是迭代器。因

当我创建一个函数,它将采用数组的
开始
结束
(比方说创建一个快速排序),我必须创建一个采用T*的版本:

template<typename T> void quick_sort(T *_beg, T *_end){...}
效果很好。。。大多数时候,但有时我会出错

can't dereference out of range vector iterator
用于尝试取消引用
end
迭代器(使用visual studio编译器)


如何安全地开发这两个版本,避免重复代码?

指针是迭代器。因此,为了避免重复,只需完全删除第一个版本,并坚持接受抽象(迭代器)。

如果您查看所有标准库函数的取值范围,它们没有“数组”和其他迭代器的两种不同重载或专门化。只有一种变体,因为指针本身就是迭代器(如答案中所述)。正确!我不知道类型
t
可以是
t*
{
    quick_sort(&*_beg, &*_end);
}
can't dereference out of range vector iterator