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 :

utilisation de valarray


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut utilisation de valarray
    Bonjour tous,

    j'ai besoin dans mon petit programme de debutant d'avoir un tableau 2D (une matrice) j'allais donc faire tout naturellement un vector de vector mais j'ai vu sur le net qu'il est possible d'utiliser des vector 2D : les valarray.

    j'ai pas trouvé sur la faq ces valarray et sur le net les explications sont un peu confuses, es ce aussi facile et automatique à utiliser que les vector?

    pourriez vous me donnez un petit exemple pour comprendre comment ca fonctionne?

    merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Parce que valarray sert peu. Un valarray est un vecteur sur lequel on peut appliquer des opérations - d'ailleurs, ce n'est pas un vecteur 2D, c'est un vecteur 1D : comme son nom l'indique, un tableau de valeurs.

    La page correspondante du MSDN (exemple avec le constructeur) et la référence de cplusplus.com donnent quelques exemples.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci de ta reponse emmanuel
    ---------------------
    il suffit de faire cela pour valarray:
    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
     
    #include <iostream>
    #include <valarray>
    using namespace std;
    int main ()
    {
      int init[]= {10,20,30,40};   
      valarray<int> first;           // (empty)
      valarray<int> second (5);      // 0 0 0 0 0
      valarray<int> third (10,3);    // 10 10 10
      valarray<int> fourth (init,4); // 10 20 30 40
      valarray<int> fifth (fourth);  // 10 20 30 40
      cout << "fifth sums " << fifth.sum() << endl;
      return 0;
    }
    pourquoi dans la référence C++ ils me parle de constructor? ce que j'ai mis ci dessous ne suffit pas pour faire une matrice??
    --------------------
    edit:
    en fait je viens de réfléchir à un truc, la seule chose que j'aurais à faire lors de mon programme est d'additionner des lignes où colonne, je n'ai donc pas besoin de valarray?

    ==> il suffit de faire pour la colonne 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tableau[1][1]+tableau[1][2]+tableau[1][3]

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Points : 361
    Points
    361
    Par défaut
    Le but initiale de valarray était de fournir une classe permettant d'assurer un minimum de performances dans le cas où on aurait des opérations facilement vectorisables.
    Cependant aucun compilateur n'a implémenté une version digne de ce nom. De toute façon à ce niveau il y a deux possibilités:
    - Code sans contrainte de performance => dans ce cas tu te fais une classe 2D simple avec les operator qui vont bien.
    - Besoin de performance... c'est assez hard en c++, mais avec du restrict, et des macros on peut arriver à faire quelque chose qui vectorise.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    d'accord, merci pour ces precisions

    A bientot

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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