【问题标题】:C++ check if element exists in arrayC ++检查数组中是否存在元素
【发布时间】:2012-02-23 04:22:19
【问题描述】:

我发现了很多这样的话题,但对我来说有点太复杂了。

如何检查数组中是否存在元素?

首先我声明一个数组并将值放入其中

for(int l=0;l<=21;l++){
        skirt[l]=l;
    }

然后与另一个for 我想检查其他数组中存在的任何元素是否在数组skirt[];

有没有办法写成这样?

for(int k=0;k<=n;k++){
    if(skaiciai[k]!=skirt[k]){
        counter++;
    }
}

【问题讨论】:

    标签: c++ arrays loops for-loop


    【解决方案1】:

    最好的方法是使用标准算法,而不是手写循环:

    if (std::find_first_of(
            skirt, skirt + skirt_size,
            skaiciai, skaiciai + skaiciai_size)
        != skirt + skirt_size)
    {
        //skirt contained an element from skaiciai
    }
    

    【讨论】:

      【解决方案2】:

      循环:

      for(int k=0;k<=n;k++){
          if(skaiciai[k]!=skirt[k]){
              counter++;
          }
      }
      

      只会比较数组中相同索引处的元素。需要嵌套for 循环,外部for 循环遍历一个数组中的元素,而内部for 循环遍历另一个数组中的元素:

      for (int k_skirt = 0; k_skirt <= n; k_skirt++)
      {
          for (int k_skaiciai = 0; k_skaiciai <= n; k_skaiciai++)
          {
              if(skaiciai[k_skaicia] == skirt[k_skirt]){
                  counter++;
              }
          }
      }
      

      【讨论】:

        【解决方案3】:

        您可以简单地使用 std::count 算法。

        auto counter = std::count( skirt, skirt+skirt_size );
        

        【讨论】:

        • 这不会编译,因为您省略了任何要比较的值或谓词; std::count() 没有重载只需要 2 个参数,因为它需要第 3 个参数来告诉它 what 来计数。问题是如何使用嵌套计算。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多