当我创建一个将采用begin和end的函数(假设创建一个quick_sort)时,我必须创建一个采用T *的版本:
template<typename T> void quick_sort(T *_beg, T *_end){...}
Run Code Online (Sandbox Code Playgroud)
和
template<typename It> void quick_sort(It _beg, It _end);
Run Code Online (Sandbox Code Playgroud)
因此,我可以在std::vector其他容器和内置数组中使用该函数。
但是为了避免重复的代码,第二个版本中唯一的事情是:
{
quick_sort(&*_beg, &*_end);
}
Run Code Online (Sandbox Code Playgroud)
效果很好...大多数时候,但有时我会收到错误消息
can't dereference out of range vector iterator
Run Code Online (Sandbox Code Playgroud)
用于尝试取消引用end迭代器(使用Visual Studio编译器)。
如何安全地开发这两个版本以避免重复代码?
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |