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

时间:2013-08-31 21:08:11

标签: c++ arrays

使用部分填充的数组,for循环的外观是什么使您能够继续在第一个打开的元素上输入数据?例如,如果数组设置为最多可容纳50个元素,但未知数量的元素已经满了,那么for循环看起来是什么样的,允许您开始在第一个打开的元素上填充更多数据?

2 个答案:

答案 0 :(得分:0)

这取决于元素的类型。如果数组保存指针且未分配的槽设置为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; 
   }

答案 1 :(得分:0)

  • 假设你有一个数组,int ar [50];

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

  • int index = 0;
  • void add(int a){
  • for(int i = 0; i&lt; 30&amp;&amp; i&lt; sizeof(ar)/ sizeof(int); i ++){
  • ar [i] = a;
  • 指数++;
  • }
  • }
  • 在此函数ADD中有一个INDEX变量,用于跟踪已添加到阵列的元素数量。此变量将表示数组的大小。
  • 现在,当您决定稍后添加更多元素时,首先需要检查索引是否等于数组大小50.如果它相等则数组已满并且没有其他元素的空间否则如果index小于50,那么你可以添加更多的元素。然后,您可以开始从索引位置添加元素,因为这表示数组中最后一个元素的位置。
  • void add(int a){
  • for(int i = index; i&lt; sizeof(ar)/ sizeof(int); i ++){
  • ar [i] = a;
  • 指数++;
  • }
  • }
  • 索引变量必须声明为类变量,然后在元素添加到数组时递增。