【发布时间】:2016-11-06 11:24:40
【问题描述】:
假设我有一个Iterable 接口:
template<typename T>
struct Iterable
{
virtual bool MoveNext() = 0;
virtual T& GetCurrent() = 0;
};
然后我有一个实现Iterable 接口的类。叫它FileList。它表示FAT16 系统上的文件列表。由于我的微控制器上的内存有限,而不是 FileList 在调用 GetCurrent 时实际存储文件列表,因此它会从正在访问的 SD 卡中获取文件。
所以我的问题是:
我刚刚执行的成语叫什么(如果它甚至是存在的成语)?
【问题讨论】:
-
如果我理解正确的话,它似乎是一个惰性迭代器。
-
如果你在写 c++,这个成语的名字是“一个错误”。如果您根据标准库中的概念对迭代器进行建模,您将能够将它们与所有标准算法一起使用。那一定是一场胜利。
-
@RichardHodges 看到我在微控制器上(如问题中所述)我无法访问 c++ 标准库,因为它会占用我所有的内存。
-
@DarthRubik:您正在编写微控制器代码并使用虚拟函数而不是模板。你确定这是个好主意吗?
-
@DarthRubik:我认为您需要认识到标准库容器(动态分配内存)和标准库算法之间的区别,后者什么都不分配。标准库不是全有或全无的东西。您可以使用对您有用的部分,而忽略其余部分。