对于一个部分填充的数组,for 循环是什么样的,使您能够继续在第一个打开的元素上输入数据?例如,如果数组设置为最多容纳 50 个元素,但其中未知数量的元素已经满了,那么 for 循环是什么样的,它允许您开始在第一个开放元素上填充更多数据?
问问题
543 次
2 回答
0
这取决于元素的类型。如果数组包含指针并且未分配的插槽设置为空,您将搜索空。如果数组是整数数组,首先需要将其初始化为一个特殊的值,例如-1,然后搜索-1。或者,您可以使用以下结构:
struct Element { Element():valid(false){}; bool valid; int val; }
并将分配的元素设置为 true。现在您需要搜索无效的元素:
for (size_t i = 0; i < n; i++)
if (!array[i].valid) {
array[i].val = val;
array[i].valid = true;
break;
}
于 2013-08-31T21:16:11.517 回答
0
假设您有一个数组 int ar[50];
然后你决定通过调用向 ar 添加 30 个元素;
- 整数索引 = 0;
- 无效添加(int a){
- for(int i = 0; i < 30 && i < sizeof(ar)/sizeof(int); i++) {
- ar[i] = 一个;
- 索引++;
- }
- }
- 在此函数 ADD 中,有一个 INDEX 变量,用于跟踪已将多少元素添加到数组中。该变量将表示数组的大小。
- 现在,当您决定稍后添加更多元素时,首先您需要检查索引是否等于数组大小 50。如果它相等,则您的数组已满并且没有更多空间容纳其他元素,否则如果索引小于 50,那么您可以向其添加更多元素。然后您可以从索引位置开始添加元素,因为这表示数组中最后一个元素的位置。
- 无效添加(int a){
- for(int i = 索引; i < sizeof(ar)/sizeof(int); i++) {
- ar[i] = 一个;
- 索引++;
- }
- }
- index 变量必须声明为类变量,然后随着元素添加到数组中而递增。
于 2013-09-01T06:45:49.977 回答