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 :

Opération sur des vector


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut Opération sur des vector
    Salut à tous,

    actuellement j'ai besoin de multiplier le contenu de deux std::vector<int>.

    Pour ce faire j'utilise l'algo le plus simple qu'il soit : la multiplication comme on la voit en primaire.

    J'ai donc deux boucles for, dans la première je crée un copie temporaire de l'objet à multiplier et dans la seconde je le multiplie à l'autre vector (en gardant les retenus bien sur), une fois fait je sort de la deuxiéme boucle for, et là je rajoute des zéros en fonction de la valeur du i de ma première boucle.
    Puis j'ajoute le temporaire dans le un nouveau vector.

    Seulement sur des vectors assez lourd et / ou des grosses quantités de multiplication ma méthode naïve devient vite lente, trop lente.

    Donc ma question est : y'aurait-il un autre algo (je cherche juste à ce qu'on m'oriente un peu pas tout l'algo pondu) qui serait plus rapide.
    (on pourrait le généraliser à la multiplication de tableau d'entier en fait.)

    Peut être aussi utilisé un autre conteneur? valarray est-il est une bonne idée? (il est difficile de trouver une doc un peu poussé sur ce conteneur...)

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    J'avoue avoir un peu lu en diagonal, mais est-ce que std::inner_product ou une combinaison de std::for_each et std::accumulate ne pourraient pas te convenir ?

    A moins que ce ne soit pour un exercice, il existe aussi des librairies pour gérer les vecteurs et les matrices (notamment boost.uBLAS )

  3. #3
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    En fait le vector est encapsulé dans une class. for_each ne me servira pas ici.

    Je regarde du côté de inner_product().


    Pour accumulate : non car il me permettrait pas de gérer les retenus. Parce que bon... j'ai peut être oublié de préciser que chaque entier ne doit pas dépasser 9.


    En fait ouaip c'est bien pour un projet / exercices, je code une class permettant de gérer des entiers de longueur limité à la taille de la mémoire. Je sais bien que gmp permet de le faire .

Discussions similaires

  1. Opération sur des vector
    Par luffy64 dans le forum Débuter
    Réponses: 2
    Dernier message: 04/03/2010, 14h19
  2. complexité des opérations sur les vector
    Par Gwindor dans le forum SL & STL
    Réponses: 14
    Dernier message: 10/07/2008, 19h37
  3. opération sur des champs déjà manipulés
    Par fred23195 dans le forum SQL Procédural
    Réponses: 10
    Dernier message: 23/08/2006, 16h16
  4. [Dates] Question pour opérations sur des heures
    Par Sangdrax1604 dans le forum Langage
    Réponses: 7
    Dernier message: 23/08/2006, 11h07
  5. Opération sur des heures dans Excel
    Par mirascheat dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/12/2005, 10h34

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