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 la STL pour limiter ma boucle for


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �prouv�
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    1 299
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 1 299
    Par d�faut utilisation de la STL pour limiter ma boucle for
    Bonjour, j'ai le code suivant

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    vector<double> v(4);
     
    for(int i = 0 ; i < 4 ; i++)
        v[i] = i;
    Est-il possible d'utiliser une fonction de la STL pour ne pas avoir � �crire cette boucle for ?

    J'ai regard� du c�t� de std::fill mais je n'ai pas trouv� grand chose...

    Merci d'avance

  2. #2
    Expert confirm�
    Avatar de Mat.M
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 538
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 538
    Par d�faut
    Citation Envoy� par salseropom Voir le message
    Est-il possible d'utiliser une fonction de la STL pour ne pas avoir � �crire cette boucle for ?

    J'ai regard� du c�t� de std::fill mais je n'ai pas trouv� grand chose...

    Merci d'avance
    euuuh � quoi cela va-t-il te servir ?
    Sinon tu peux prendre un it�rateur mais franchement je ne vois pas l'int�r�t � part prendre un while()

  3. #3
    Membre �m�rite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par d�faut
    Avec boost tu peux faire �a
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    std::vector<double> v(
        boost::counting_iterator<int>(0),
        boost::counting_iterator<int>(4));

  4. #4
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par d�faut
    Citation Envoy� par salseropom Voir le message
    Bonjour, j'ai le code suivant

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    vector<double> v(4);
     
    for(int i = 0 ; i < 4 ; i++)
        v[i] = i;
    Est-il possible d'utiliser une fonction de la STL pour ne pas avoir � �crire cette boucle for ?

    J'ai regard� du c�t� de std::fill mais je n'ai pas trouv� grand chose...

    Merci d'avance
    for_each + foncteur ? xD.
    Plus s�rieusement en C++0x : std::initializer_lists...

  5. #5
    Membre �m�rite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par d�faut
    avec l'algorithm std::generate_n ou std::generate, un back_inserter et un functor qui renvoit i+1?

    mais bon, si c'est juste +1 � chaque fois..

    http://www.cplusplus.com/reference/a...hm/generate_n/

  6. #6
    Invit�
    Invit�(e)
    Par d�faut
    Citation Envoy� par salseropom Voir le message
    Bonjour, j'ai le code suivant

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    vector<double> v(4);
     
    for(int i = 0 ; i < 4 ; i++)
        v[i] = i;
    Est-il possible d'utiliser une fonction de la STL pour ne pas avoir � �crire cette boucle for ?
    Sur STLPort, il y a une fonction iota() qui fait exactement �a (elle tire son nom d'une fonction APL). Tu �criras

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    iota(v.begin(), v.end(), 0);
    (le z�ro dans l'appel est la base, la premi�re valeur de la suite, affect�e � v[0])

    Elle n'existe malheureusement pas chez Dinkumware, mais tu peux la red�finir en utilisant generate() et un foncteur qui g�re l'�num�ration.

    Par exemple, pour g�n�rer des suites affines,

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct LinGen { 
       int val;
       int pas; 
       lingen(int b=0,int p=1) val(b),pas(p){} 
       int operator()() {
           int v=val;
           val+=pas;
           return v;} 
    };
    Ca s'appelle avec

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    vector<int> v(12);
    generate(v.begin(),v.end(),LinGen(0,1));
    Le premier param�tre du constructeur est la base, le second le pas (la diff�rence entre deux valeurs successives)

    LinGen(0,1) g�n�re 0 1 2 3 4 ...
    LinGen(1,2) g�n�re 1 3 5 7 9 ...
    LinGen(30,-2) g�n�re 30 28 26 24 22 ...

    et ainsi de suite. Et bien sur, ca se g�n�ralise � des suites plus complexes, ou des flottants...

    Ce n'est pas tout � fait aussi �l�gant que ce que tu aurais dans des langages vectoriels (fa�on APL, en J, par exemple, tu �cris un truc comme base+pas*i.nb_vals), mais c'est une bonne approximation.

    Francois
    Derni�re modification par Invit� ; 06/02/2010 � 14h39.

Discussions similaires

  1. R�ponses: 8
    Dernier message: 31/07/2009, 21h10
  2. [XL-2003] Indices pour cellules dans boucle for
    Par doowy38 dans le forum Macros et VBA Excel
    R�ponses: 7
    Dernier message: 09/06/2009, 15h51
  3. Compter le nombre d'enregistrements pour limiter une boucle
    Par guivrator dans le forum SQL Proc�dural
    R�ponses: 1
    Dernier message: 12/05/2009, 13h56
  4. Aide pour syntaxe de boucle "FOR"
    Par tribaleur dans le forum ASP
    R�ponses: 2
    Dernier message: 31/05/2006, 14h03

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