我試圖編寫模板化的快速排序函數。在我腦海中的想法是,我會寫,可以在具有標運算符和它所包含的對象次序關係的任何數據結構,操作快速排序,所以我可以做這樣的事情模板中的模板 - 從模板類型訪問包含的類型
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本身必須是一個帶有模板參數的模板類,它指定了它包含的類型,但這並不是什麼大不了的事。
這可能嗎?它似乎應該是。這個叫什麼?
除了內置陣列:-) – 2010-10-29 22:00:55
這將是更好地定義使用'T了'container_traits'結構:: value_type'在主模板,專門用於內置陣列。 –
2010-10-29 22:02:13
@Peter:數組不是容器(其中「容器」的意思是「遵守STL或標準庫容器的概念」)。但是,指向數組的指針可以用作迭代器。最好使用迭代器。 – 2010-10-29 22:02:26