2015-02-23 54 views
1

我正在用C++创建一个交互式数独板。每当用户更改一个值时,我想检查一下该板是否完成。当板上的所有空间都被填满时,该板将完成。我的两个想法是:效率与内存权衡

  1. 创建一个私人数据成员,其中包含填充空间的数量。要检查板是否完成,我只需检查这个值是否等于boardLength^2

  2. 创建一个迭代通过板的成员函数,当找到空格时返回false,如果它通过没有找到任何空格

这是一个偏好问题,还是有一个更接受/正确的方法来做到这一点?

+2

通常,如果您发现自己将代码包装在执行十亿次循环的代码中,那么实际上,每次程序执行时,代码将执行一次*,这就浪费了您的时间。 – meagar 2015-02-23 19:35:24

回答

9

这是一个偏好问题,还是有一个更接受/正确的方式来做到这一点?

优化的接受和正确的方法,在一般:

优化速度或内存占用,当你真正需要,当你确定一个实际的问题。你的项目的独特需求将决定什么是“问题”。

否则,请优化代码的可读性和可维护性。

你的具体情况:

机会是,无论你选择哪种算法,你的支票会发生如此之快,你将无法衡量它,并且用户将从未通知之间的区别简单的解决方案和“快速”解决方案。任何试图优化这一点(以牺牲复杂性或可读性为代价或花时间编写代码)都是很差的折衷。

使用最简单的可能解决方案。一旦完成,如果用户输入出现明显延迟,并且您可以确认这是由低效的电路板完成检查引起的,请考虑改进算法的方法。