如何在 C++ 中定义采用两个迭代器的模板函数?

how to define template function that takes two iterators in c++?

我想定义一个带有两个迭代器的模板函数,一个是 begin(),另一个是 end()。这在 C++ 中如何实现?

到目前为止,我能想到的是:

template <class Iterator>
typename std::iterator_traits<Iterator>::value_type func( Iterator begin, Iterator end ) {

}

这是错误的吗?

标准库的工作方式(至少以 <algorithm> 为例)是允许稍后进行类型解析。所以你会改用:

template <class InputIt, class T>
T func( InputIt begin, InputIt end )
{
    // ...
}