IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Comparer les données de X vectors simultanément


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 56
    Par défaut Comparer les données de X vectors simultanément
    Bonjour,

    Admettons que l'on a une ligne de commande avec un nombre variable d'arguments. Ces arguments sont des chemins de fichiers sauvegardés dans un vector. Chaque fichier est ouvert en lecture et son contenu envoyé dans un parseur.

    Ensuite, on crée une std::map<unsigned int,std::vector<std::vector<std::string>>> ou on associe un numero à une table.

    Comment peut-on effectuer une comparaisons des données issues des X tables simultanément ?

    Merci.

  2. #2
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Quelque chose comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    using Vector2D = vector<vector<string>>;
    map<int, Vector2D> data;
    // ...
    using Vector2DIter = Vector2D::const_iterator;
    using Vector2DRange = pair<Vector2DIter, Vector2DIter>;
    vector<Vector2DRange> data_iter;
    for(auto x : data)
      data_iter.push_back(Vector2DRange(x.begin(), x.end()));
     
    while(!complete(data_iter))
      for(...) // Compare each items in data_iter one by one
        // use *data_iter[i]
    En gros tu stockes des itérateurs vers tes données ce qui te permet de les comparer.

  3. #3
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Hello,

    Tu peux extraire les tables concernées puis faire des traitements dessus avec std::all_of, std::any, std::for_each...
    Mais ça dépend de ce que tu entend par simultanément.

    Si tu veux faire des vérifications sur X tables en 1 appel de fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    typedef std::vector<std::string> row_t
    typedef std::vector<row_t> table_t;
    typedef std::reference_wrapper<table_t> table_ref;
    typedef std::reference_wrapper<table_t const> table_cref;
     
    std::map<unsigned int, table_t> tables;
     
    auto tabList = {0, 2, 3}; // vient de la ligne de commande, peut être n'importe quel conteneur
     
    std::vector<table_cref> workingTables;
    workingTables.reserve(tabList.size());
     
    for(auto id: tabList) {
    	auto it = tables.find(id)
    	if(it != tables.end()) {
    		workingTables.emplace_back((*it).second);
    	}
    }
     
    // tester que les tables 0, 2 et 3 ont toutes exactement 12 lignes
    bool result = std::all_of(workingTables.begin(), workingTables.end(), [](table_cref table) {
    	return table.size() == 12;
    });
    (Par exemple)

    Si tu veux pouvoir traiter plusieurs tables en même temps, sans forcément effectuer le même traitement sur chaque (multithreading), regarde du coté de TBB (ou équivalent).

    edit: confusion au niveau des conteneurs.

Discussions similaires

  1. [XL-2007] comparer les données de deux feuilles
    Par devalender dans le forum Excel
    Réponses: 3
    Dernier message: 07/06/2011, 16h49
  2. [XL-2007] comparer les données reçues sur un mois et completer les données manquantes par une macro.
    Par wisemanvsfatboy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/11/2010, 17h16
  3. comparer les donnes d'un controle ASP.net au base de donne
    Par princesse_sahara dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/05/2008, 01h13
  4. Comparer les données de deux tables ?
    Par bicz400 dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/02/2008, 11h33
  5. Réponses: 4
    Dernier message: 26/07/2007, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo