这是一个理论上的例子,但希望它能突出我的问题:
假设我有一个Item
对象的主列表,并且 anItem
有两个属性,比如Weight
和Value
。
该程序将经常被要求排序Weight
并获得最轻的Item
,而在其他地方它被排序Value
并获得最昂贵的Item
。
主列表有可能非常大,因此一遍又一遍地对主列表进行排序将是很多不必要的工作。为了节省时间,是否可以将排序结果存储为自己的列表?这些其他列表是否会简单地存储指向真实对象的指针而不只是再次存储它们?
这取决于Item
是 astruct
还是 a class
。如果它是 a class
(这将是合理的默认值),那么两个Weight
列表都只包含对对象的引用 - 所有/Value
值都不会重复。如果它是 a struct
,那么所有值都将被复制,因为每个值都有一个单独的支持向量,并且实际的结构将在向量中。旁注:如果值为strings,请注意字符串也是引用类型,因此字符串内容不会重复(除非它们是单独创建的,没有任何伪实习等)。
这些其他列表是否会简单地存储
指针引用真实对象而不只是再次存储它们?
只要Item
是类而不是结构:是的。
正如我们在这里所读到的,类是引用类型,这意味着它们不会被复制到新列表中
您确实可以保留两个列表,并将它们按顺序排序price
,Weight
从而使您的生活更轻松