适当的标记阵列末端的方法

Proper way to mark the end of an array

本文关键字:阵列 方法      更新时间:2023-10-16

我只能访问数组而不是向量。

说我可能需要100个对象的数组,但可能会更少。如果较少的话,是否有一种优雅的标记方法,以便它不需要其余的物体?

还是我必须将其存储在对象本身中?是否没有等效的零字符?

有几种可能的方法。

您可以使用哨兵值,并将该值放在数组的末尾,就像''一样标记C风格字符串的末端。问题在于,您必须确保您的哨兵值永远不会在需要存储的数据中发生。

您可以随身携带数组中值数量的计数,并将该值传递给符合您数组的函数。

您可以创建一个指针,该指针指向一个超过数组中的最后一个元素,并将数组作为一对指针进行处理:一个指向第一个元素,一个指向一个元素。这与STL算法兼容,因此可能是您最好的整体方法。

不,没有什么可以标记内存中数组的末端。"没有等效的无效字符"。跟踪这一点是您的责任。

使用 std::vector的众多原因之一是向量跟踪这一点。但是,正如您所说的那样,您"可以访问数组而不是向量",因此由您负责处理向量的职责。