我想正確學習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個元素,沒問題。 –