【发布时间】:2016-09-14 19:17:22
【问题描述】:
我有一些代码可以枚举一些数据,如下所示:
int count;
InitDataEnumeration(/* some init params */, &count);
for (int i = 0; i < count; i++)
{
EnumGetData(i, &data);
// process data ...
}
我想将此代码转换为适合 C++11 的 range-for 的形式。
我正在考虑定义一个DataEnumerator 包装类,其构造函数将调用上述InitDataEnumeration() 函数。
我们的想法是像这样使用这个包装类:
DataEnumerator enumerator{/* init params*/};
for (const auto& data : enumerator)
{
// process data ...
}
如何将前一个int-indexed for 循环重构为后一个基于范围的形式?
我正在考虑从枚举器包装类中公开begin() 和end() 方法,但我不知道它们应该返回什么样的迭代器,以及如何定义这样的迭代器。
注意迭代过程是只进的。
【问题讨论】:
-
我看不到“重复”链接问题中对我的问题的回答。