1
begin()とend()の2つのイテレータをとるテンプレート関数を定義したいと思います。どのようにこれはC + +で達成することができますか?C++で2つのイテレータを使用するテンプレート関数を定義する方法は?
これまでのところ、私は、次を考えることができます:
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'クラスに限定しないでください。検索/修正関数を実装している場合は、 'T'ではなく' InputIt'を返す方が良いでしょう。もし何かがあれば、呼び出し側は返されたイテレータの値をどうするかを決めるでしょう: 'template InputIt func(InputIt begin、InputIt end){...} ' –
ありがとう@RemyLebeau – WorldWideBangers