2012-01-31 146 views
6

我发现了很多像这样的主题,但对我而言有点复杂。C++检查数组中是否存在元素

如何检查数组是否存在?

第一我声明一个数组并把值在它

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++; 
    } 
} 

回答

3

环路:

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

只会比较阵列中的同一索引处的元件。嵌套0​​回路需要与外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); 
+0

这不会编译,因为您省略了任何用于比较的值或谓词;没有'std :: count()'重载只需要2个参数,因为它需要第三个来告诉它_what_来计数。这就是如何使用嵌套来计数的问题。 – 2017-07-18 18:35:38

5

这样做将是使用标准算法的最佳方式,而不是手写循环:

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