- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我是 C++ 新手,所以请多多包涵。我想了解 STL iterator_traits
.在“C++ 标准库”一书中,结构 iterator_traits
定义如下:
template <class T>
struct iterator_traits {
typedef typename T::value_type value_type;
typedef typename T::difference_type difference_type;
typedef typename T::iterator_category iterator_category;
typedef typename T::pointer pointer;
typedef typename T::reference reference;
};
所以在我看来,它重新暴露了 T
的子类型。已经暴露了。再往前走,书中给出了如何使用它的示例,如下所示
template <class MyIterator>
void do_something(MyIterator start, MyIterator end) {
typedef typename iterator_traits<MyIterator>::value_type value_type;
value_type v = *start;
.....
}
我的问题是我为什么需要这个 iterator_traits
这里的结构,如果想法是获得 value_type
,我不能从 MyIterator
获得它吗?直接地 ?我的困惑似乎源于我(肯定是不正确的)理解子类型的信息必须来自 template <class T>
用于实例化 iterator_trait
.因此,如果您能解释一下,最好举个例子,我为什么需要以及在哪里需要 iterator_traits,这将非常有帮助。
最佳答案
指向数组的指针可以用作随机访问迭代器。
对于指针(显然不能将类型声明为嵌套类型,因为只有类可以具有嵌套类型)和类类型迭代器,需要某种一致的方法来获取这些类型。特征类模板提供了这种一致的方式。
iterator_traits
类模板专门用于如下指针:
template <typename T>
struct iterator_traits<T*>
{
typedef std::random_access_iterator_tag iterator_category;
typedef T value_type;
typedef T* pointer;
typedef T& reference;
typedef std::ptrdiff_t difference_type;
};
关于c++ - iterator_trait 的典型用例是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6742008/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!