2012-04-11 2 views
1

Existe-t-il un algorithme ou une méthode d'aide dans la bibliothèque boost pour rechercher un vecteur de boost::tuple objets? Voici mon code:Rechercher un vecteur de boost :: tuple

typedef boost::tuple<int, char const*, char const*> Tuple; 
typedef std::vector<Tuple> ErrorStringMap; 

ErrorStringMap mystrings = tuple_list_of 
    (10, "10", "ten") 
    (20, "20", "twenty") 
    (30, "30", "thirty") 
    (40, "40", "fourty"); 

Je veux chercher le vecteur de tuples et trouver la première tuple avec la valeur 20 comme le premier élément du tuple. Je veux accéder aux 2ème et 3ème éléments de ce tuple.

+0

Si vous recherchez toujours l'élément par le premier élément, pensez à utiliser un '(unordered_) map' à la place. – GManNickG

+2

Quel est le problème avec 'std :: find_if'? – ildjarn

+0

@ildjarn Je devrais écrire mon propre foncteur, je crois. J'espérais que boost avait déjà une méthode d'aide qui retournerait une référence au tuple au lieu d'un itérateur (plus facile de travailler avec). Je peux écrire ma propre solution assez facilement, je voulais juste m'assurer que boost n'avait rien pour le premier. –

Répondre

0

ildjarn a répondu ceci dans la liste des commentaires ci-dessous ma question, mais il n'a pas affiché comme une réponse, alors je vais le faire pour lui:

placeholders de Phoenix sont en boost :: Les espaces réservés de Phoenix . En outre, si vous utilisez Phoenix, vous n'avez pas besoin de lier pour cela - avec le bon comprend, at_c < 0> (_ 1) == 20 œuvres.

Questions connexes