c++ - 如何从模板参数(std::vector 和普通指针)中提取 value_type?

标签 c++ templates c++11

我有一个带有以下接口(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/

相关文章:

c++ - 如何使用 clang 和选项 -std=c++11 编译项目,使用 autotools

c++ - 您可以在类的初始化列表中使用 Lambda 吗?

c++ - C++服务的自动延迟启动

c++ - 我可以使用元编程将类型列表转换为对列表中的每种类型具有特定隐式转换行为的新类型吗?

c++ - 使用boost获取当前时间

c++ - 访问模板参数列表中先前模板参数的类型定义?

django - 如何在 django 模板中显示代码片段, "|safe"过滤器没有帮助

C++ 没有匹配的函数来调用 vector 中的删除

c++ - 类方法在继承中不能正确调用

c++ - 如果从函数返回,局部变量的成员子对象也会被 move 吗?