指针和排序
Pointers and sorting
我在使用指针指向结构数组时遇到问题。它工作得很好,但我需要添加到这个数组并在每次传递时重新排序,因为我的指针将有效地改变它们指向的字符,因为它们指向相同的数组索引。
有什么办法可以解决这个问题吗?我一直在尝试使用另一个数组,但我仍然遇到需要向现有数组插入新元素并重新排序的问题。
您可以使用指向结构的指针数组,单独分配结构实例,而不是使用结构数组。然后,您可以对指针数组进行排序,而无需更改它指向的任何结构的地址。这样,指向结构的指针将保持有效。
如果你有一个结构数组,那么对该数组进行排序意味着在内存中移动它的元素,除非数组开始时已经按顺序排列。如果您移动一个对象,那么您本质上会使指向它的任何现有指针无效。如果这对您来说不是很明显,那么请思考指针是什么以及移动对象意味着什么。
一种替代方法是维护和排序指向您的结构的指针数组,而不是对结构本身进行排序。在那种情况下,您将只移动指针,而不是它们指向的东西,因此指向您的结构的指针不会失效。
我在使用指针指向结构数组时遇到问题。它工作得很好,但我需要添加到这个数组并在每次传递时重新排序,因为我的指针将有效地改变它们指向的字符,因为它们指向相同的数组索引。
有什么办法可以解决这个问题吗?我一直在尝试使用另一个数组,但我仍然遇到需要向现有数组插入新元素并重新排序的问题。
您可以使用指向结构的指针数组,单独分配结构实例,而不是使用结构数组。然后,您可以对指针数组进行排序,而无需更改它指向的任何结构的地址。这样,指向结构的指针将保持有效。
如果你有一个结构数组,那么对该数组进行排序意味着在内存中移动它的元素,除非数组开始时已经按顺序排列。如果您移动一个对象,那么您本质上会使指向它的任何现有指针无效。如果这对您来说不是很明显,那么请思考指针是什么以及移动对象意味着什么。
一种替代方法是维护和排序指向您的结构的指针数组,而不是对结构本身进行排序。在那种情况下,您将只移动指针,而不是它们指向的东西,因此指向您的结构的指针不会失效。