関数テンプレート Count についての例に従っていましたが、何かが欠けています。確かに、私は完全に iterator_traits を理解していなかったので、混乱しています:
テンプレート関数 COUNT は次のように宣言されています。
template <class InputIterator, class T>
typename iterator_traits<InputIterator>::difference_type
count (InputIterator first, InputIterator last, const T& val);
私の質問:
1) iterator_traits::difference_type を使用する理由 この関数は、単純な を使用しない理由としてオブジェクトを返します:
template <class InputIterator, class T>
T count(InputIterator first, InputIterator last, const T& val);
私は試して働きました。
2) iterator_traits を使用しなければならない場合、「value_type」(反復子が指すことができる値) ではなく、「different_type」(1 つの反復子を別の反復子から減算する) を使用する必要があるのはなぜですか?
この場合でも試してみました。
関数が Iterator を返すときに iterator_traits を使用する必要があると思いましたが、テンプレート関数 FIND を見て、さらに混乱しました。
template <class InputIterator, class T>
InputIterator find (InputIterator first, InputIterator last, const T& val);
一方、私は次のようにコーディングします:
template <class InputIterator, class T>
typename iterator_traits<InputIterator>::value_type
find( nputIterator first, InputIterator last, const T& val);
誰かがこの点を明確にすることができますか?
ご協力いただきありがとうございます。