带有迭代器但没有容器的c ++类

con*_*der 3 containers iterator stl

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

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

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

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

谢谢

Kon*_*lph 6

在没有容器的情况下考虑迭代器是否合适?

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

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