首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么make_reverse_iterator(make_reverse_iterator(it))会导致不同的类型?

make_reverse_iterator(make_reverse_iterator(it))会导致不同的类型,是因为make_reverse_iterator函数返回的是一个逆向迭代器,而逆向迭代器是一个包装器,它包装了原始迭代器,并改变了其行为。当我们对一个迭代器进行两次逆向迭代器的包装时,会导致类型发生变化。

具体来说,make_reverse_iterator函数接受一个迭代器作为参数,并返回一个逆向迭代器。第一次调用make_reverse_iterator(it)会将原始迭代器it包装成一个逆向迭代器,类型为reverse_iterator。而第二次调用make_reverse_iterator(reverse_iterator)会再次将逆向迭代器包装成一个新的逆向迭代器,类型为reverse_iterator<reverse_iterator>。

这是因为逆向迭代器的类型是根据原始迭代器的类型进行推导的。第一次包装后,逆向迭代器的类型已经确定为reverse_iterator,而第二次包装时,编译器会将reverse_iterator作为原始迭代器类型进行推导,从而得到reverse_iterator<reverse_iterator>这样的嵌套类型。

需要注意的是,这种嵌套类型可能会导致一些编译错误或意外的行为,因此在使用逆向迭代器进行嵌套包装时需要谨慎。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【C++深度探索】map与set的基础介绍与实用指南

    我们之前已经接触过STL中的部分容器,比如:vector、list、deque、forward_list(C++11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。   而今天我们学习的map、set、multimap、multiset是关联式容器,关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高。   根据应用场景的不同,STL总共实现了两种不同结构的关联式容器:树型结构与哈希结构。树型结构的关联式容器主要有四种:map、set、multimap、multiset。这四种容器的共同点是:使用平衡搜索树(即红黑树)作为其底层结果,容器中的元素是一个有序的序列。下面依次介绍每一个容器。

    01
    领券