2012-01-31 32 views
6

He encontrado muchos temas como este, pero fue demasiado complicado para mí.C++ compruebe si el elemento existe en el conjunto

¿Cómo comprobar si el elemento existe en una matriz?

primera Declaro una matriz y poner los valores en ella

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

y luego con otro for me gustaría comprobar si cualquier elemento que existe en otra matriz está en serie skirt[];

¿Hay una forma de escribir algo como esto?

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

Respuesta

3

El bucle:

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

sólo sería comparar los elementos al mismo índice en las matrices. se requieren anidadas for bucles con el exterior iterar for bucle sobre los elementos en una matriz y el interior for iteración de bucle sobre los elementos en la otra matriz:

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

Simplemente puede usar el algoritmo std :: count.

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

Esto no sería compilar, ya que omite cualquier valor o predicado con el que comparar; ninguna sobrecarga de 'std :: count()' toma solo 2 argumentos, ya que necesita el 3er para decirle _what_ contar. Y es cómo contar el uso del anidamiento esa es la pregunta. –

5

La mejor manera de hacer esto sería utilizar algoritmo estándar, en lugar de un bucle manuscrita:

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