这是一个更普遍的问题,但我不知道不同编程语言的空间是否不同,所以我用actionscript-3标记它。我有很多实例,我需要一个通常为1个元素的向量,但可能更多次。例如,如果我使用int与1 int的向量,我将节省多少内存?假设我有一个函数可以对向量中的所有数字执行某些操作。输入通常是单个int,但有时我可能需要更多。矢量的大小也是固定的,所以我没有机会将1元素矢量变成2元素。
现在我可以做两件事:
1)我只能使用向量并且有一个带有向量的函数,或者
2)我可以定义1个函数,它接受一个int,另一个函数执行相同的操作,但接受一个int的向量。
或许我可以让它接受任何类型的参数,检查输入的类型然后将其转换为整数或向量?基本上,我应该制作两个适合这两种情况的函数,还是仅仅使用一个向量的函数?
答案 0 :(得分:1)
确定取出了旧的例子,因为它并没有真正适用。
如果未提前指定向量的大小,则当向量空间不足时,大小会增加。每次向量的大小增加时,都会分配一个新的内存块。因此,通过不预先定义向量的大小,内存占用量就是存储一个int所需的内容。
因此,根据这一点制作一门课程并不是一个坏主意。但现在你需要看看它的OOP。因此,如果您的大多数锁具有一个密钥,那么您实际上并不需要访问lock.keys [0]的大部分时间,尤其是即使知道您需要这样做,您仍然需要一些它只需要的指示需要并有一把钥匙。 lock.lockType或lock.requiredNumKeys或两者。由于所有这些逻辑和属性都特定于您需要多个键的罕见时间,我说...
建立2个班级。
编辑:
我想我要提到的一件事是使用两个类,你可能会在某个时候想要一个数组或一个锁集合。使两个类实现和接口像IKeyedLock定义一个函数addKey()和可能是一个get isLocked()这样你可以有一个列表将所有IKeyedLocks,但SingleKeyLock和MultiKeyLock类确定不同,如果它们仍然被锁定和如何添加一个或多个键(
)