2009-08-29 5 views
2

Je voulais savoir comment pouvons-nous obtenir l'indice du tableau si le tableau entré par l'utilisateur correspond au tableau d'entrée?En C++ comment retourner l'index d'un tableau si l'utilisateur entré correspond au tableau entré?

Par exemple:

Tableau d'entrée = [1,2,3,4] et l'utilisateur est entré Array = [2,3] que je devrais obtenir la sortie comme index où les deux correspond tableau est 1.

Des conseils seraient très appréciés.

+2

Je pense que vous avez oublié la balise de devoirs –

+0

Je suis assez sûr que ce n'est pas lié tag. Merci pour la contribution cependant. – Rachel

+0

Peut-être que vous pourriez éditer la question pour mentionner que vous ne voulez pas utiliser STL. Si ce n'est pas un devoir, je serais également très curieux de connaître les raisons. – avakar

Répondre

4

Utilisez le STL search algorithm, qui fait exactement ce que vous voulez: "L'algorithme search() recherche les éléments [start2, end2) dans la plage [start1, end1)." Vous devrez fournir des pointeurs au début et à la fin des deux tableaux; vous obtenez le pointeur de fin pour un tableau en ajoutant sa longueur à son pointeur de départ. Il vaut mieux utiliser le vecteur STL pour stocker vos données au lieu d'un tableau, puis vous pouvez simplement appeler vec.begin() et vec.end() pour obtenir les itérateurs souhaités.

Editer: Pour le faire sans la recherche std ::, suivez l'exemple sur le lien que j'ai fourni, qui montre comment la recherche peut être effectuée. Si vous le faites en style C, vous utiliserez des pointeurs (comme int *) plutôt que ForwardIterator. Le seul point délicat, c'est la partie en dehors de la boucle, où ils déterminent quelle limite doit être définie - cela se transformera en arithmétique du pointeur.

+0

@aem comment implémenter w/o algorithme de recherche STL – Rachel

+0

+1 de moi - une solution supérieure. Cela fait trop longtemps que je n'ai pas écrit de C++. L'utilisation de STL est la voie à suivre. – duffymo

Questions connexes