1
我想定義一個模板函數,它需要兩個迭代器,一個是begin(),另一個是end()。這怎麼能在C++中實現?如何定義在C++中需要兩個迭代器的模板函數?
到目前爲止,我能想到以下幾點:
template <class Iterator>
typename std::iterator_traits<Iterator>::value_type func(Iterator begin, Iterator end) {
}
這是錯的?
謝謝。我只是對這個'class InputIt,class T'的例子感到困惑。什麼是類InputIT和類T?我在其他地方看過同樣的東西,它讓我感到困惑。 – WorldWideBangers
'InputIt'是用於輸入迭代器的類型,'T'是被返回的類型。迭代器不一定是實際的'iterator'類,它們只需要支持'++',' - '和'*'運算符。例如,原始指針是有效的迭代器。所以不要把你的函數限制爲'iterator'類。如果你正在實現一個搜索/修改函數,最好返回'InputIt'而不是'T',並讓調用者決定如何處理返回的迭代器的值(如果有的話):'template InputIt func(InputIt開始,InputIt結束){...}' –
謝謝@RemyLebeau – WorldWideBangers