【发布时间】:2012-11-29 01:14:11
【问题描述】:
我有一个二维矩形网格,我需要对这个网格中的节点子集应用不同的函数。子集由矩形边界给出,例如行和列分隔符。由于我不想一遍又一遍地用 2 个 for 循环对迭代进行编码,我正在考虑两种方法来解决这个问题:
首先创建一个自定义迭代器提供程序,该提供程序使用矩形限制进行初始化,然后在迭代时保留它们。虽然这是可行的,但要使这个迭代器兼容似乎还需要做很多工作。使用标准 stl 算法。
第二种方法是将函数指针传递给遍历for循环并在内部循环中执行的函数。这也是可行的,但可能会产生非常难看的语法,因为我必须传递成员函数。
通常哪种方式更可取?对于这样的用例,是否有任何干净的示例,以防止我重新发明轮子?
注意:由于代码频繁执行,因此该操作对性能非常关键
【问题讨论】:
-
如果您能够描述如何选择子集,它们是否以某种方式相交或完全不同等,将会很有帮助。
标签: c++ algorithm iterator iteration