stl – 具有迭代器但没有容器的类

我正在尝试实现一个类,它允许我迭代对象STL样式而不将它们显式存储在容器中.

例如,一个简单的例子是一个类中的< Paragraph> :: iterator,它实际上没有Paragraphs的容器,而是有一个< string>文字变量.很容易创建一个实际逐行通过文本并组装段落的成员函数,但是对于我来说,将所有这些文本再次存储在某个容器中以便我可以继承它的迭代器似乎很愚蠢.

另外,我把它称为< Paragraph> :: iterator而不是< string> :: iterator的原因是因为我可能想要一个不同类型的迭代器.例如,我可以计算每个段落中的字符数,并有一个< int> :: iterator.

我想我的问题是:在没有容器的情况下考虑迭代器是否合适?

谢谢

最佳答案

is it appropriate to think in terms of iterators when there’s no container?

它不仅合适,而且是优越的思维方式:类应该具有精益接口 – 也就是说,它们应该只暴露它们需要暴露的东西,仅此而已.如何在内部处理段落(无论是将它们存储在容器中,如果存储在哪个容器中)都是实现细节,并且不属于类的接口.

在任何情况下,该类只应公开段落的迭代器范围.一旦你在接口级别上摆脱了容器,就没有理由在课堂上有一个,正如你已经注意到的那样.

转载注明原文:stl – 具有迭代器但没有容器的类 - 代码日志