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