【发布时间】:2010-10-29 21:52:53
【问题描述】:
我试图编写一个模板化的快速排序函数。我脑子里的想法是我会写一个快速排序,它可以对任何数据结构进行操作,该数据结构具有下标运算符和其中包含的对象的顺序关系,所以我可以做类似的事情
quicksort<deque<int> >();
quicksort<vector<string> >();
等等
我开始使用像
这样的函数template<typename T>
void quicksort(T& list);
我立即遇到的问题是提出了一个执行排序所必需的交换操作的函数。我需要知道我正在交换的值是否是字符串、字符、整数等,以便我可以临时执行交换!
所以我需要能够做这样的事情(我知道这种语法不正确,我只是想说明我正在尝试做的事情):
template<typename T, typename R>
void quicksort(T<R>& list);
所以我可以在执行交换时知道 T 中包含什么类型的对象。显然,这意味着 T 本身必须是一个模板类,其模板参数指定它包含的类型,但这并不是什么大问题。
这可能吗?似乎应该如此。这个叫什么?
【问题讨论】: