我想正确学习C++。我开始考虑的一个问题是如何正确地使模板功能成为正确类型的容器。一个例子是实现合并排序。为了避免在为递归步骤将对象分割成两半时需要创建一个容器的副本,我想使用迭代器。这意味着,我需要有以下形式的合并功能:返回正确的容器类型
template<typename ForwIt, typename Comparator>
... merge(ForwIt begina, ForwIt enda, ForwIt beginb, ForwIt endb, Comparator comp)
{
Container foo;
...
return foo;
}
我的问题:
如何定义,在一个习惯的方法正确的返回类型的功能?
我应该如何替换“容器”类型,以便它是与要合并的组件相同的容器的实例? (我这里假设两个参数合并是迭代器相同类型的容器)
一般情况下,如何使代码清洁和高效的可能吗?
@ JT1:请注意,几乎没有任何算法与容器有任何关系。我应该能够通过20元素矢量的第10个元素排序第5个元素,没问题。 –