查找循环队列中的元素数

时间:2015-02-10 22:40:00

标签: c++ arrays modulus

假设我有一个使用大小为10的数组实现的循环队列。不使用C ++中的sizeof函数,如何查找数组中的元素数量,或者换句话说,索引的数量已被使用过。我想使用模块化数学,因为我知道第一个和最后一个索引,但是如何正确地将它变成一个返回这个大小的函数?

2 个答案:

答案 0 :(得分:1)

除了使用sizeof之外,您无法找到C风格数组的大小;这是该运营商存在的一个原因。模数肯定不会帮助你。

现在,对于C ++的std::array模板类,您只需使用size()方法即可。

编辑:如果您现在已经是最后一个“可能”的索引(第一个总是 0),您可以使用它加一个作为长度。

答案 1 :(得分:1)

您似乎知道数组的大小,但是您想知道数组中有多少索引填充了非NULL或默认值的实际值。如果是这种情况,最坏的情况是你必须迭代数组并检查每个索引。

通过做一些记账并自己跟踪填充的索引计数,你总能让自己的生活变得更轻松。每次向数组添加值时,都要增加计数。移除时减少计数。如果您更新已填充的索引,请单独留下计数。