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

| 我正在尝试实现一个类,该类允许我迭代STL样式的对象,而无需将其显式存储在容器中。 一个简化的例子是,在一个类中的一个“ 0”实际上没有一个容器的段落,而是一个“ 1”变量。创建实际上逐行遍历文本并组合段落的成员函数很容易,但是将所有这些文本再次存储在某个容器中只是为了让我可以从其迭代器继承,这对我来说似乎很愚蠢。 另外,之所以将它称为
<Paragraph>::iterator
而不是
<string>::iterator
是因为我可能想拥有某种不同类型的迭代器。例如,我可以计算每个段落中的字符数,并得到
<int>::iterator
。 我想我的问题是:没有容器时,以迭代器的方式思考是否合适? 谢谢     
已邀请:
           在没有容器的情况下,以迭代器的方式思考是否合适? 这不仅是适当的,而且是一种高级的思维方式:类应该具有精简的接口–也就是说,它们应该只公开需要公开的内容,仅此而已。内部如何处理段落(是否将其存储在容器中,如果存储在容器中,则存储在哪个容器中)是实现细节,并且不属于类的界面。 在任何情况下,该类仅应公开这些段落的迭代器范围。因此,一旦您在界面级别上摆脱了容器,您可能就没有理由在班级中拥有一个容器了。     
        是的,迭代器的概念完全独立于容器的概念。 例如,标准库具有一组流迭代器。可以迭代的任何内容都应由C ++中的迭代器表示,无论是否存在底层内存容器。     
        Boost.Range围绕着这个概念。 http://www.boost.org/doc/libs/release/libs/range/index.html     
        对我来说,听起来像是您将一个5英镑的物体当作一个无聊的容器来对待。但是,难道不是5英镑会成为5英镑的容器的一部分吗?每个
Paragraph
都是单词(或字符串,取决于您的需要)的容器?所以可以在
Paragraph
对象中使用
std::string
迭代器,并使用一个标准容器容纳
Paragraph
? 您仍然可以创建一个自定义迭代器来迭代所需的对象,但是,此问题的答案很好地概述了如何构造迭代器类。     

要回复问题请先登录注册