2012-01-31 280 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 
}