con*_*der 3 containers iterator stl
我正在尝试实现一个类,它允许我迭代对象STL样式而不将它们显式存储在容器中.
例如,一个简化的例子是,<Paragraph>::iterator在一个实际上没有Paragraph容器的类中,而是有一个<string> text变量.创建一个实际通过逐行文本并组装段落的成员函数很容易,但是对于我来说,将所有这些文本再次存储在某个容器中似乎很愚蠢,以便我可以继承它的迭代器.
另外,我把它称为a <Paragraph>::iterator而不是a <string>::iterator的原因是因为我可能想要一个不同类型的迭代器.例如,我可以计算每个段落中的字符数,并有一个<int>::iterator.
我想我的问题是:在没有容器的情况下考虑迭代器是否合适?
谢谢
在没有容器的情况下考虑迭代器是否合适?
它不仅合适,而且是优越的思维方式:类应该具有精益接口 - 也就是说,它们应该只暴露它们需要暴露的东西,仅此而已.如何在内部处理段落(无论是将它们存储在容器中,如果存储在哪个容器中)都是实现细节,并且不属于类的接口.
在任何情况下,该类只应公开段落的迭代器范围.一旦你在接口级别上摆脱了容器,就没有理由在课堂上有一个,正如你已经注意到的那样.
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |