2012-01-31 23 views
6

Znalazłem wiele takich tematów, ale to było dla mnie zbyt skomplikowane.C++ Sprawdź, czy element istnieje w tablicy

Jak sprawdzić, czy element istnieje w tablicy?

pierwszy zadeklarować tablicę wartości i umieścić w nim

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

a następnie z inną for Chciałbym sprawdzić, czy każdy element, który istnieje w drugiej tablicy w tablicy skirt[];

Czy istnieje sposób na napisanie czegoś takiego?

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

Odpowiedz

3

Pętla:

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

by porównać tylko elementy w tym samym indeks w tablicach. Zagnieżdżone for pętle są wymagane z zewnętrzną for pętli kolejno po elementów w jednej matrycy i wewnętrzną for pętli iteracji przez elementy w drugiej tablicy:

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

Można po prostu użyć algorytmu std :: count.

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

Nie skompilowałoby to, ponieważ pominięto jakąkolwiek wartość lub predykat do porównania; żadne przeciążenie 'std :: count()' nie zajmuje tylko 2 argumentów, ponieważ potrzebuje 3, aby powiedzieć mu, co liczyć. I to jest sposób liczenia za pomocą zagnieżdżania, to jest pytanie. –

5

Najlepszym sposobem, w tym celu byłoby wykorzystanie standardowego algorytmu zamiast odręcznej pętli:

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