我只能访问数组而不是矢量。
说我可能需要一个包含100个对象的数组,但它可能更少。如果它更少是否有一种优雅的方式来标记这一点,以便知道其他对象不是必需的?
或者我必须将它存储在对象本身中吗?是否没有等效的空字符?
答案 0 :(得分:3)
有几种可能的方法。
您可以使用sentinel值,并将该值放在数组的末尾,就像'\0'
标记C样式字符串的结尾一样。问题在于您必须确保您的Sentinel值永远不会出现在您需要存储的数据中。
您可以随身携带数组中值的数量,并将该值传递给处理数组的函数。
您可以创建一个指针指向数组中最后一个元素的指针,并将数组作为一对指针处理:一个指向第一个元素,一个指向一个结束的指针。这与STL算法兼容,因此它可能是您最好的整体方法。
答案 1 :(得分:0)
不,没有什么能够标记内存中数组的结尾。 “没有等效的空字符”。您有责任跟踪此事。
使用std::vector
的众多原因之一是向量跟踪这一点。但是,正如你所说,你“可以访问数组而不是向量”,那么由你来处理向量的责任。