假设我有一个使用大小为10的数组实现的循环队列。不使用C ++中的sizeof
函数,如何查找数组中的元素数量,或者换句话说,索引的数量已被使用过。我想使用模块化数学,因为我知道第一个和最后一个索引,但是如何正确地将它变成一个返回这个大小的函数?
答案 0 :(得分:1)
除了使用sizeof
之外,您无法找到C风格数组的大小;这是该运营商存在的一个原因。模数肯定不会帮助你。
现在,对于C ++的std::array
模板类,您只需使用size()
方法即可。
编辑:如果您现在已经是最后一个“可能”的索引(第一个总是 0),您可以使用它加一个作为长度。
答案 1 :(得分:1)
您似乎知道数组的大小,但是您想知道数组中有多少索引填充了非NULL或默认值的实际值。如果是这种情况,最坏的情况是你必须迭代数组并检查每个索引。
通过做一些记账并自己跟踪填充的索引计数,你总能让自己的生活变得更轻松。每次向数组添加值时,都要增加计数。移除时减少计数。如果您更新已填充的索引,请单独留下计数。