对于任何熟悉 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/