c++ - 如何从 C++ 中的迭代器中检索值类型?

标签 c++ iterator

对于任何熟悉 C++ 语法的人来说,我的问题肯定是一个简单的问题。我正在学习 C++,这是一些 家庭作业。

template<typename Iter>
void quickSort(Iter begin, Iter end)
{        
    //..
    auto pivot = * ( begin + (end - begin)/2 );
    //..
}

pivot 应该包含来自区间 [begin, end] 中心的值。

我在那里编写的代码有效,但 auto 是新 C++11 语言标准中的关键字。老办法怎么办?我应该写什么而不是 auto

最佳答案

typename std::iterator_traits<Iter>::value_type

如果您的模板是用 Iter 实例化的,这将起作用作为指针类型。

顺便说一句,typename不是类型本身的一部分。它告诉编译器 value_type真的是一种类型。如果它是函数或静态数据成员的名称,则会影响语法。编译器不一定知道它是什么,因为 iterator_traits 的特化对于 Iter模板编译时可能不可见。

关于c++ - 如何从 C++ 中的迭代器中检索值类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3967996/

相关文章:

c++ - 将 C++ 文件合并到单个源文件中

c++ - 在 CUDA 分配模板函数中弃用了从字符串常量到 'char *' 的转换

c++ - vector 迭代器不递增

java - 无法从 Node<E> 转换为 Node<E>?

iterator - 返回 RefCell 中 Vec 的迭代器

java - Geotools 在 SimpleFeatureCollection 上嵌套循环

c++ - SQLite 如何在列上使用 LIKE 并添加通配符

c++ - Arduino Uno - serial.read 到位结构

c++ - 什么 JSON 解析库适用于 Google NaCl (c++)?

c++ - C++自定义迭代器const转换正确完成