comment vérifier qu'une valeur existe dans c++ stl vecteur et d'appliquer une fonction à chaque élément du vecteur?
J'ai deux questions liées à la vecteur classe de la bibliothèque standard de C++.
- Comment puis-je vérifier si une valeur (disons d'un entier) existe déjà dans un vecteur?
Ce que je veux dans les mots est comme suit: "si l'entier existe déjà dans le vecteur, la prochaine, sinon l'ajouter à la fin du vecteur."
- Comment puis-je appliquer une fonction qui détient les arguments pour chaque élément du vecteur? (Il semble que je ne peux pas le faire avec for_each)
Dans les mots: "pour chaque z de l'élément dans le vecteur d'appliquer MyAddFn(i,j)"
... ou peut-être que je ne suis pas sur la bonne voie avec le vecteur stl conteneur de séquence, et je dois définir mon propre itérateur?
Que voulez-vous dire exactement dans (2)? Ce qui devrait
Pouvez-vous veuillez donner des précisions 2 ?
Êtes-vous en mesure d'utiliser le C++11 fonctions avec votre compilateur ? Si vous l'êtes, je vous conseille d'utiliser for_each avec un lambda ou std::bind. Sinon, vous pouvez traiter avec bind1st et bind2nd, mais vous devriez vraiment jeter un oeil à boost::foreach.
MyAddFn(i,j)
être appliquée?Pouvez-vous veuillez donner des précisions 2 ?
Êtes-vous en mesure d'utiliser le C++11 fonctions avec votre compilateur ? Si vous l'êtes, je vous conseille d'utiliser for_each avec un lambda ou std::bind. Sinon, vous pouvez traiter avec bind1st et bind2nd, mais vous devriez vraiment jeter un oeil à boost::foreach.
OriginalL'auteur tagoma | 2012-07-14
Vous devez vous connecter pour publier un commentaire.
1)
std::find(v.begin(), v.end(), 5) == v.end() //checks that vector<int> v has no value 5.
2) Utiliser C++11 std::bind par exemple, mais pour de vrai conseil que j'ai besoin de plus de contexte d'utilisation MyAddFn.
vector::end()
vérifie si la valeur est pas stockées dans le vecteur! I. e. votre expression est évaluée à true lorsque la valeur 5 n'existe pas dans le vecteur.em, maintenant, c'est correct, c'était une faute de frappe
OriginalL'auteur ForEveR
Pour 1, utilisation std::find algorithme. Si l'élément n'existe pas, il renvoie l'itérateur à la fin. Dans ce cas, ajouter l'élément.
OriginalL'auteur Mahesh
2ème question. Vous pouvez utiliser l'objet au lieu de fonction:
OriginalL'auteur user1525342