Je suis assez nouveau à C ++, je n'ai pas vraiment de fond. Je lie à créer une liste de tuples, le premier sera un int, la seconde sera une chaîne.
#include <string> #include <list> #include <boost/tuple/tuple.hpp> .... list< tuple<int,string> > time;
4 Réponses :
juste comme une note latérale:
La nouvelle norme C ++ introduit des modèles variadiques et avec cela également. GCC et Visual Studio (au moins) les apportent. Donc, si vous êtes possible pour vous (c'est-à-dire si tous les compilateurs pris en charge sont déjà très probablement très probables), vous pouvez l'utiliser. P>
Le seul problème est que certains compilateurs ont toujours du tuple dans le STD :: TR1 Espace de noms et autres l'ont déjà dans l'espace de noms STD. Aussi parfois, vous devez inclure et parfois. Mais vous pouvez configurer votre système de construction pour définir des macros qui vous permettent de prendre en charge plusieurs régimes. Si vous, par exemple seulement besoin de prendre en charge Visual Studio 10 et / ou une version assez nouvelle GCC, vous pouvez effectuer les éléments suivants: p> par exemple avec cmake que vous pourriez générer un en-tête. Fichier, qui vous apporte de la prise en charge de tous les compilateurs, qui supporte des tuples (et avec un peu plus de travail, même d'utiliser un coup de pouce à utiliser comme une chute). P> Pour ce faire, vous créeriez quelque chose comme un tuple.h.cmake Fichier: P> #include <string>
#include <list>
#include "tuple.h"
std::list<TR1_NS::tuple<int, std::string> > time;
Pour une liste simple Utilisez Vous voulez probablement quelque chose de simple comme: p> < Pré> xxx pré> std :: vecteur code> au lieu de
std :: Liste code>.
std :: liste code> est en réalité une implémentation d'une liste doublement liée que vous n'avez peut-être pas besoin. p> p>
Y a-t-il un moyen facile de le trier dans ce cas par âge? Dois-je écrire ma propre fonction de tri?
Pourrait ne pas être pertinent ici, mais si la "partie de création" contient remplir la liste avec des éléments, boost.Assign pourrait être utile. Vous pouvez faire quelque chose comme ceci:
#include <boost/assign/list_of.hpp> #include <vector> int main() { typedef boost::tuple<int, std::string> tuple; std::vector<tuple> v = boost::assign::tuple_list_of(1, "foo")(2, "bar"); }
Les réponses ici sont un peu dépassées, et ne vous disent pas comment trier la liste.
Depuis C ++ 11 vous pouvez utiliser la norme code tuple code> , avec un vecteur code> par exemple: p>
get<int>(data[i])
Dumb Question: Vous êtes-vous souvenu d'ajouter à l'aide de l'espace de noms Std / à l'aide de l'espace de noms d'espace de noms? Quels sont les messages d'erreur spécifiques que vous obtenez?
Avez-vous une "utilisation d'un espace de noms"; Dans votre code? Je suppose que vous avez besoin d'une "utilisation d'espaces de noms"; également.
Je pense que vous pouvez utiliser std :: map à cette fin. Il tiendra des paires
int-chaîne code>, triées automatiquement par
int code> valeurs. ici est la description.
Vous étiez correct, il manquait à l'aide de l'espace de noms. Haha, je dois me procéder à ça, merci!