【发布时间】:2013-12-05 14:48:01
【问题描述】:
我有一个类似下面的数组
int arr[32];
这个数组可以包含 32 个元素。
如果我在该数组中添加一些数据,如下所示
arr[0] = 5;
arr[1] = 10;
arr[2] = 15;
arr[3] = 20;
如您所见,我将数据添加到元素 0,1,2,3 中,而其他元素仍未初始化或为空。
现在,如何获取只有数据的元素计数?
在当前示例中将获得 4 个元素。
【问题讨论】:
-
(1) 使用已知值(通常为 0)初始化数组。然后检查有多少不是你的起始值。 (2) 保留一个“nUsed”变量并在每次写入时递增它。 (3) 创建一个包含“已使用”元素的布尔值的并行数组。 ..必须有更多的方法..
-
(4)如果你打算按in的顺序添加元素,你只需要保留“下一个”要填写的索引即可; (5) 对于无序,上述任何一种情况,或保留分配索引列表的并行有序列表(这本身就是一个有序数组)。
-
(对于(6)请参阅@NemanjaBoric 的答案中的评论)(7)您的新值都与模式
n > 0 && n % 5 == 0匹配。使用与此模式不匹配的值初始化数组。如果您需要找出使用了多少元素,请根据您的模式测试每个值。 -
(8) 列出允许的值。在
arr中,您存储允许值的index。不使用未指向allowed数组中的有效索引或指向allowed数组中指定为“无效”的索引的arr成员。 -
(9) 列出允许的值。使用不在此列表中的任何值初始化您的数组。要计算“已使用”元素,请将每个值与
allowed列表进行比较。