Ton*_*ion 2 c++ iterator naming-conventions
我只想试着理解 C++中的InputIterator和OutputIterator实际上是什么.现在,直到现在,我总是假设我一直知道输入和输出的定义也适用于迭代器.
因此,这意味着输入是"放置到的东西",这意味着你可以写迭代器,如,把东西在迭代器.
输出是"放在某个地方",这对我来说总是意味着,写入屏幕或坚持变量.
现在结果是我们的朋友Iterators,另一方面,InputIterator用于对一系列元素的只读访问,这似乎应该被称为"输出",因为你使用这种类型的例如,迭代器写一个std::vector<int>
to 的元素std::cout
.
在输出迭代原来是一个是只写访问.
我想知道,如果有人能给出一个合理的解释,我会发现迭代器类型的命名很奇怪吗?
这只是一个惯例问题."输入"和"输出"被理解为关于环境的"从"/"到",而不是关于您的程序; 或者在另一个方向,作为关于你的程序的"进/出",而不是环境.
因此,"输入" 从环境中获取某些内容并使其可用于您的程序,例如istream
或read
."输出"将程序中的某些东西放回到环境中,比如ostream
和write
.
迭代器遵循相同的方向,输入迭代器使程序可用范围内的数据,而输出迭代器将程序中的数据放入一个范围.
您可能会想到的方式是"输入"是您的程序应该写入的其他人的输入.但我想这句话假设一个以自我为中心的程序员,他们自己的程序是他们的参考点,而不是环境中的任何人(或每个人).
输入迭代器是输入流的包装器。输出迭代器是输出流的包装器。
(诚然,您可以编写其他输入/输出迭代器,但这些是标准中存在的示例,以istream_iterator
和的形式ostream_iterator
)
输入流是您从中读取(获得输入)的流,因此,输入迭代器也是您可以从中获取输入的流。
我同意,如果您只将它们视为迭代器,这可能有点不直观。但是当您记住它们通常包装流时,这就更有意义了。
例如,您可以在 周围创建一个ostream_iterator
(这是一个 OutputIterator) 。std::cout
归档时间: |
|
查看次数: |
1319 次 |
最近记录: |