繁体   English   中英

从迭代器中获取const_iterator

[英]Obtaining const_iterator from iterator

是否有一个元函数f ,一个映射iterator到其相应的const_iterator

f<std::vector<T>::iterator>::type应该产生std::vector<T>::const_iterator

我不知道这样的元功能。

并非所有迭代器都具有相应的const_iterator。 例如insert_iterator。 所以这样的元函数需要决定在这种情况下要做什么。

我可以为reverse_iterator想一些事情:使用base成员函数decltype ,可以提取返回类型以返回iterator

但是iterator / const_iterator没有这样的函数,因此很难看出如何实现这一功能,缺少提供内部typedef或需要显式特化。

我认为你的问题的一般解决方案(也不可能是便携式)。 至少我无法想象一个:-)。

这里的难题是容器定义了const_iterator类型。 要获取容器的const_iterator类型,您必须确定容器类型。

但是,如果以容器的迭代器类型作为元函数参数开始,则无法检索容器的类型。

对于已知的T(s),你想要的是什么......

我不认为这是可能的,因为迭代器类型之间通常没有明确定义的映射。 例如,两个容器可以共享非const迭代器类型,但具有不同的const迭代器。 通常,您只能从容器类型映射到迭代器类型,但不能在迭代器类型之间或从迭代器类型映射到容器类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM