如何跳过处理一个数组的元素,如果它在另一个数组?(C)

fbcarpbf  于 2023-03-07  发布在  其他
关注(0)|答案(4)|浏览(136)

array1array2是结构示例的两个数组,用malloc数组函数分配。array1_totlengtharray2_totlength是数组中的元素数。
我想对array1的每个元素执行一个操作func1(),除了array2中的元素。

for (int bl= 0; bl < array1_totlength; bl++)
    {
      /* If this element is in array_2, skip it.*/
      for (int l= 0; l < array2_totlength; l++)
      {
        if (array2[l] == array1[bl])
        {?????}
        
      }
      func1(array1[bl]);
      
    }

注意,这是问题的简化版本;在我的实际情况中,array2的每个元素都有一个指向array1元素的指针,代码向array2添加一个新元素(通过内存重新分配),该新元素的指针指向对应的array1元素,我需要跳过创建已经指向的元素;另一种选择是完全废弃array2并从头开始,但我不倾向于这种选择,因为如果我以前做过,那么再做一次就没有意义了,它只会不必要地减慢程序的速度。

anhgbhbe

anhgbhbe1#

只要使用一个变量来指示是否找到了它,这就可以工作,也可以向任何阅读代码的人发出信号。

for (int bl= 0; bl < array1_totlength; bl++)
    {
      bool found = false;
      /* Search for the element in array_2 */
      for (int l= 0; l < array2_totlength; l++)
      {
        if (array2[l] == array1[bl])
        {
           found = true;
           break; /* stop searching */
        }        
      }
      if (!found) {
        func1(array1[bl]);
      }
      
    }
wf82jlnq

wf82jlnq2#

例如你可以写

for ( int bl = 0; bl < array1_totlength; bl++ )
{
      /* If this element is in array_2, skip it.*/
      int l = 0;

      while ( l != array2_totlength && array2[l] != array1[bl] ) ++l;

      if ( l == array2_totlength ) func1(array1[bl]);
      
}
093gszye

093gszye3#

要解决您的问题,您可以执行以下操作

for (int bl = 0; bl < array1_totlength; bl++)
     {
      /* If this element is in array_2, skip it. */ 
     for (int l = 0; l < array2_totlength; l++)
     {
          if (array2[l] == array1[bl])
             {continue;}
         else{
               func1(array1[bl]);
              }
         }
     }
hmae6n7t

hmae6n7t4#

for (int bl= 0; bl < array1_totlength; bl++)
{
  /* If this element is in array_2, skip it.*/
  for (int l= 0; l < array2_totlength; l++)
  {
    if (array2[l] == array1[bl])
    continue;
    
  }
  func1(array1[bl]);
  
}

始终记住数组中的两项内容

  1. continue;跳过一步会有帮助
  2. break; 2它帮助我们跳出循环。3希望这个解决方案对你有帮助。4快乐编码;)

相关问题