vector<int>::const_iterator 是一个output_iterator吗?

Is vector<int>::const_iterator an output_iterator?

本文关键字:iterator 一个 output lt gt const vector int      更新时间:2023-10-16

根据C 概念:

input_iterator以外的任何迭代器都是output_iterator。

a vector<int>::const_iteratorrandom_access_iterator,当然是 output_iterator

但是,根据cppreference.com, output_iterator必须是可写的,而 vector<int>::const_iterator却不是。

vector<int>::const_iteratoroutput_iterator

另请参阅:如何检查迭代器是否为C ?

中的output_iterator

no。 vector<int>::const_iterator是a 常数迭代器([container.requirements.general]),这意味着它不满足输出迭代器的要求。

[iterator.requirentess.general]/4:

进一步满足输出迭代器要求的迭代器称为可突变迭代器 s。不可拆卸的迭代器称为常数迭代器s。


vector :: const_iterator是一个random_access_iterator,当然是output_iterator。

这完全是错误的。

在这里查看:CPP参考

输出标能是一个可以写入指向的迭代器 元素。

您的报价显然意味着什么是任何不满足输入迭代器要求的迭代器是输出迭代器。

迭代器类别的标准层次结构定义(请参阅24.2.1),以下具有 nested 要求的迭代器类别要求

随机访问 ->双向 ->向前 ->输入

虽然输出迭代器类别单独使用。

此嵌套意味着每个前进迭代器也是输入迭代器(即还满足输入迭代器类别的要求),每个双向迭代器也都向前且输入迭代器。这是您应该解释的上下文。

std::vector::const_iterator是一个随机访问迭代器,它也满足了双向,前向和输入迭代器的要求。IE。从这个意义上讲, std::vector::const_iterator 输入迭代器(!)。出于哪种原因,您的报价不能用于推断出它是输出迭代器。

进一步分为 tobable 迭代器和 nonmutable 常数)迭代器的迭代器是在此的顶部应用的,但是没有必要带来在这种情况下,它进入图片。