如何在 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 )
{
// ...
}
我想定义一个带有两个迭代器的模板函数,一个是 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 )
{
// ...
}