Comment puis-je vérifier si int donné existe dans array?

Par exemple, j’ai ce tableau:

int myArray[] = { 3, 6, 8, 33 }; 

Comment vérifier si la variable donnée x y est?

Dois-je écrire ma propre fonction et boucler le tableau, ou existe-t-il en c ++ moderne un équivalent de in_array en PHP?

Vous pouvez utiliser std::find pour cela:

 #include  // for std::find #include  // for std::begin, std::end int main () { int a[] = {3, 6, 8, 33}; int x = 8; bool exists = std::find(std::begin(a), std::end(a), x) != std::end(a); } 

std::find renvoie un iterator à la première occurrence de x , ou un iterator à la fin de la plage si x n’est pas trouvé.

Je pense que vous cherchez std::any_of , qui retournera une réponse vrai / faux pour détecter si un élément est dans un conteneur (tableau, vecteur, deque, etc.)

 int val = SOME_VALUE; // this is the value you are searching for bool exists = std::any_of(std::begin(myArray), std::end(myArray), [&](int i) { return i == val; }); 

Si vous voulez savoir où se trouve l’élément, std::find retournera un iterator au premier élément, quel que soit le critère que vous fournissez (ou le prédicat que vous lui donnez).

 int val = SOME_VALUE; int* pVal = std::find(std::begin(myArray), std::end(myArray), val); if (pVal == std::end(myArray)) { // not found } else { // found } 

Essaye ça

 #include  #include  int main () { int myArray[] = { 3 ,6 ,8, 33 }; int x = 8; if (std::any_of(std::begin(myArray), std::end(myArray), [=](int n){return n == x;})) { std::cout << "found match/" << std::endl; } return 0; 

}

Vous n’avez presque jamais à écrire vos propres boucles en C ++. Ici, vous pouvez utiliser std :: find .

 const int toFind = 42; int* found = std::find (myArray, std::end (myArray), toFind); if (found != std::end (myArray)) { std::cout << "Found.\n" } else { std::cout << "Not found.\n"; } 

std::end nécessite C ++ 11. Sans cela, vous pouvez trouver le nombre d'éléments dans le tableau avec:

 const size_t numElements = sizeof (myArray) / sizeof (myArray[0]); 

... et la fin avec:

 int* end = myArray + numElements; 
 int index = std::distance(std::begin(myArray), std::find(begin(myArray), end(std::myArray), VALUE)); 

Retourne un index invalide (longueur du tableau) s’il n’est pas trouvé.

Vous devez le parcourir en boucle. C ++ n’implémente aucun moyen plus simple de le faire lorsque vous utilisez des tableaux de types primitifs.

voir aussi cette réponse: C ++ vérifier si un élément existe dans un tableau