繁体   English   中英

访问部分填充的数组上的第一个打开元素

[英]Accessing first open element on a partially filled array

对于部分填充的数组,for循环的外观如何,使您可以继续在第一个打开的元素上输入数据? 例如,如果将数组设置为最多容纳50个元素,但其中不明数量的元素已满,则for循环的外观将如何使您开始在第一个打开的元素上填写更多数据?

这取决于元素的类型。 如果数组包含指针,并且未分配的插槽设置为null,则将搜索null。 如果数组是整数数组,则首先需要将其初始化为特殊值,例如-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; 
   }
  • 假设您有一个数组,int ar [50];

  • 然后,您决定通过调用将30个元素添加到ar;

  • int索引= 0;
  • 无效add(int a){
  • for(int i = 0; i <30 && i <sizeof(ar)/ sizeof(int); i ++){
  • ar [i] = a;
  • 索引++;
  • }
  • }
  • 在此函数ADD中,有一个INDEX变量,用于跟踪已向数组中添加了多少个元素。 此变量将代表数组的大小。
  • 现在,当您决定以后再添加一些元素时,首先需要检查索引是否等于数组大小50。如果等于,则您的数组已满,没有更多空间容纳其他元素,否则,如果索引小于50,则可以向其中添加更多元素。 然后,您可以从索引位置开始添加元素,因为这表示数组中最后一个元素的位置。
  • 无效add(int a){
  • for(int i = index; i <sizeof(ar)/ sizeof(int); i ++){
  • ar [i] = a;
  • 索引++;
  • }
  • }
  • 索引变量必须声明为类变量,然后随着元素添加到数组而增加。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM