我有一个带有以下接口(interface)的排序:
template< class RandomIt >
void my_sort( RandomIt first, RandomIt last )
{
}
我希望 RandomIt
成为 std::vector<T>.begin()/end()
的迭代器或普通指针类型 T* first,T* last
.我想如果我假设 RandomIt
是一个 vector ,我可以从RandomIt::value_type
得到它, 但这不适用于 T* first,T* last
.
我的问题是,如何提取 value_type T
在这两种情况下都来自模板参数?
最佳答案
使用 iterator_traits<T>::value_type
(cppreference)。请注意,标准库为 T*
提供了 iterator_traits 定义。和 const T*
, 所以它也适用于普通指针。
关于c++ - 如何从模板参数(std::vector 和普通指针)中提取 value_type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14432709/