【发布时间】:2015-02-10 22:39:59
【问题描述】:
假设我有一个使用大小为 10 的数组实现的循环队列。如果不使用 C++ 中的 sizeof 函数,如何查找数组中的元素数量,或者换句话说,如何找到具有被使用。我想使用模块化数学,因为我知道第一个和最后一个索引,但是如何将它正确地放入一个返回这个大小的函数中?
【问题讨论】:
-
不是生活在 80 年代,而是使用
std::array或std::vector。
假设我有一个使用大小为 10 的数组实现的循环队列。如果不使用 C++ 中的 sizeof 函数,如何查找数组中的元素数量,或者换句话说,如何找到具有被使用。我想使用模块化数学,因为我知道第一个和最后一个索引,但是如何将它正确地放入一个返回这个大小的函数中?
【问题讨论】:
std::array 或 std::vector。
除了使用sizeof 之外,您找不到 C 样式数组的大小;这是该运营商存在的原因之一。模数肯定帮不了你。
现在,对于 C++ 的 std::array 模板类,您可以简单地使用 size() 方法。
编辑:如果您现在已经是最后一个“可能”索引(第一个是 always 0),您可以将其加一作为长度。
【讨论】:
您似乎知道数组的大小,但您想知道数组中有多少索引填充了非 NULL 或默认值的实际值。如果是这种情况,最坏的情况是您将不得不迭代数组并检查每个索引。
您总是可以通过自己做一点簿记并跟踪填充的索引计数来让您的生活更轻松一些。每次向数组添加值时,增加计数。删除时减少计数。如果您更新已填充的索引,请不要理会计数。
【讨论】: