我需要编写一些排序算法,为此我希望有一个基本接口和虚函数Sort()
。问题是我真的不知道客户端将使用哪种类型的元素。我只需要比较运算符可用于此类型。所以,它可能是模板,但我不能同时使用模板和虚拟。我需要有关此代码架构的建议。
此外,如果没有就地排序,最好能够传递分配器或内存。我需要插入这部分的地方。也许作为可选参数。
可能我根本不需要课程,另一种程序结构更适合。感谢。
编辑: 使用方法:
obj.SetStrategy(specificAlgortihm);
obj.Execute(array);
...
template <class T>
void Obj::Execute(array)
{
m_Algorithm->Sort(array);
}