适当的标记阵列末端的方法
Proper way to mark the end of an array
我只能访问数组而不是向量。
说我可能需要100个对象的数组,但可能会更少。如果较少的话,是否有一种优雅的标记方法,以便它不需要其余的物体?
还是我必须将其存储在对象本身中?是否没有等效的零字符?
有几种可能的方法。
您可以使用哨兵值,并将该值放在数组的末尾,就像' '
一样标记C风格字符串的末端。问题在于,您必须确保您的哨兵值永远不会在需要存储的数据中发生。
您可以随身携带数组中值数量的计数,并将该值传递给符合您数组的函数。
您可以创建一个指针,该指针指向一个超过数组中的最后一个元素,并将数组作为一对指针进行处理:一个指向第一个元素,一个指向一个元素。这与STL算法兼容,因此可能是您最好的整体方法。
不,没有什么可以标记内存中数组的末端。"没有等效的无效字符"。跟踪这一点是您的责任。
使用 std::vector
的众多原因之一是向量跟踪这一点。但是,正如您所说的那样,您"可以访问数组而不是向量",因此由您负责处理向量的职责。
相关文章:
- 将积分类型的数组作为另一个不相关的积分类型的阵列进行访问的安全且符合标准的方法
- 查找和替换子阵列的最佳方法
- 需要帮助从12个字节生成新的24字节RGB查找阵列,或者是一种更好的编码方法
- 比strncpy更好地复制字符阵列的部分方法
- 重新分配指针阵列的一部分的安全方法
- 从C++与 C 灵活阵列成员互操作的正确方法是什么?
- 比较阵列的更好方法
- VS2017是否有VLA(可变长度阵列)支持解决方法
- 与其所有者一起分配阵列的正确方法
- 在C++使用新方法打印2d阵列
- 适当的标记阵列末端的方法
- 如何通过可行的方法汇总浮点阵列并获得精确的结果
- 通过C 中的2D TIC-TAC-TOE阵列迭代的好方法
- 如何在C中获取char阵列的第一个X元素?提升效果是否有改进的方法
- 检查阵列位置在C++中是否为空的 CPU 高效方法
- 这是遍历阵列的更快方法
- 存储2D对象阵列的最佳方法是什么
- boost::进程间更新阵列的最快方法
- 使用Cuda C将大型2D阵列导出到文件的更快方法
- 增加阵列C++的最有效方法