1

这是一个更笼统的问题,但我不知道不同编程语言的空间是否不同,所以我用 actionscript-3 标记了它。在很多情况下,我需要一个通常包含 1 个元素的向量,但有时可能更多。例如,如果我使用 int 与 1 int 的向量相比,我会节省多少内存?假设我有一个函数可以对向量中的所有数字执行某些操作。输入通常是单个 int,但有时我可能需要更多。向量的大小也是固定的,所以我没有机会将 1 元素向量变成 2 元素向量。

现在我可以做两件事:

1) 我只能使用向量并且有一个函数可以接收向量,或者

2) 我可以定义 1 个接收单个 int 的函数和另一个执行相同操作但接收 int 向量的函数。

或者我可以让它接受任何类型的参数,检查输入的类型,然后将其转换为整数或向量?基本上,我应该制作 2 个函数来满足这两种情况,还是只制作 1 个只使用向量的函数?

4

1 回答 1

1

OK 去掉了旧的例子,因为它并没有真正适用。

如果未提前指定向量的大小,则当向量空间不足时,大小会增加。每次向量的大小增加时,都会分配一个新的内存块。因此,通过不预先定义向量的大小,内存占用量正是存储一个 int 所需的。

因此,仅基于这一点制作一堂课并不是一个坏主意。但是现在您需要查看这一切的 OOP。因此,如果您的大多数锁都有一把钥匙,那么大多数时候您真的不需要访问 lock.keys[0] 尤其是即使知道您需要这样做,您仍然需要一些指示器,它只需要并且需要并且拥有一把钥匙。lock.lockType 或 lock.requiredNumKeys 或两者兼而有之。由于所有这些逻辑和属性都特定于您需要多个键的罕见情况,我说......

构建 2 个类。

编辑:

我想我会提到的一件事是在使用两个类时,您可能在某些时候需要一个数组或锁集合。使这两个类都实现和接口,如定义函数 addKey() 和 get isLocked() 的 IKeyedLock 这样你可以有一个列表将所有 IKeyedLocks,但是 SingleKeyLock 和 MultiKeyLock 类确定它们是否仍然被锁定以及如何添加一个键(或多个键)

于 2012-12-02T16:44:37.350 回答