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 :

Exploitation de la documentation C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    dev
    Inscrit en
    Février 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2018
    Messages : 119
    Par défaut Exploitation de la documentation C++
    Bonjour à tous,

    Je m'interroge sur l'exploitation de la documentation C++. Pour la compréhension de l'utilisation d'une classe, j'imagine qu'elle doit se suffire à elle même.
    Je sais que j'ai des lacunes en programmation...(ce n 'est pas du tout mon métier mais ça m'intéresse) mais par exemple, prenons la classe std::vector.
    Pour s'en servir, il faut utiliser "< > ". Le problème, c'est que j'ai du mal à comprendre cette page http://www.cplusplus.com/reference/v...vector/vector/ L'exemple en fait mention, bien entendu mais...

    Comment faites vous pour comprendre l'utilisation de cette classe à partir de http://www.cplusplus.com/reference/v...vector/vector/, en mettant de côté l'exemple.

    j'imagine que c'est là dedans mais je ne comprends pas tout ce "charabia".

    default (1)

    vector();
    explicit vector (const allocator_type& alloc);

    fill (2)

    explicit vector (size_type n, const allocator_type& alloc = allocator_type());
    vector (size_type n, const value_type& val,
    const allocator_type& alloc = allocator_type());

    range (3)

    template <class InputIterator>
    vector (InputIterator first, InputIterator last,
    const allocator_type& alloc = allocator_type());

    copy (4)

    vector (const vector& x);
    vector (const vector& x, const allocator_type& alloc);

    move (5)

    vector (vector&& x);
    vector (vector&& x, const allocator_type& alloc);

    initializer list (6)

    vector (initializer_list<value_type> il,
    const allocator_type& alloc = allocator_type());



    Merci par avance.

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par défaut
    Bonjour.

    Citation Envoyé par WipEout37 Voir le message
    Pour s'en servir, il faut utiliser "< > ".
    En effet, mais c'est dû à la nature template de vector.

    Ce que tu mets entre chevron est le type des données que vector va stocker (cf. la section Template parameter de cette page).

  3. #3
    Membre confirmé
    Homme Profil pro
    dev
    Inscrit en
    Février 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2018
    Messages : 119
    Par défaut
    ok je te remercie !

    Il faut que je potasse un peu cette notion de template donc.

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    La doc que tu as cité n'est pas mal (même si j'ai tendance à lui préférer http://fr.cppreference.com/w/cpp/container/vector, question de goût), mais c'est une documentation de référence, pas d'apprentissage. Si tu ne sais pas encore ce qu'est un template, ce n'est pas elle qui va te l'apprendre.

    Je te conseille donc plutôt dans un premier temps de te tourner vers des bons livres qui te donneront probablement une base plus solide avec une approche plus progressive.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre confirmé
    Homme Profil pro
    dev
    Inscrit en
    Février 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2018
    Messages : 119
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    ...
    Salut,

    Je suis preneur de titres pour les livres. En fait depuis que je me suis mis au c++ (enfin si on veut), j'ai voulu utiliser un livre que j'avais acheté il y a quelques années "Apprendre le C++" de C.Delannoy.
    A l'usage, c'est immangeable il ne me sert strictement à rien !

    Sinon je suis tombé sur une formation dispensée via linkdin (1 mois offert) sous forme de videos. Le prof est vraiment super. Je mets le lien pour qui cela intéresse.
    En plus, il y a un cours special template.

    https://www.video2brain.com/fr/forma...entaux-de-c-11

    https://www.video2brain.com/fr/forma...-des-templates

    Citation Envoyé par koala01 Voir le message
    ...
    Salut,

    Je te remercie pour ton excellente explication.
    Je la garde en favoris car elle me servira à coup sûr !

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Personnellement, je préfère la documentation que l'on trouver sur cppreference à celle que l'on trouve sur cplusplus.com... Mais c'est un choix tout fait personnel

    Pour la classe std::vector, par exemple, on y trouve cette page qui est, à mon sens, plus claire que celle dont tu as donné le lien.

    Pour introduire la notion de template, on va faire simple: Le principe est de se dire que, bien que l'on ignore le type des données que l'on va manipuler, on sait en revanche très bien comment on va les manipuler.

    En effet, peu importe que l'on place des pommes, des poire ou des scoubidoo dans un tableau, ce que l'on veut, c'est de pouvoir en placer plusieurs ensembles, et de pouvoir accéder à chaque élément séparément: la manière de les stocker, les possibilités d'accès fournies ou les fonctions que l'on utilisera pour ce faire seront tout à fait identiques, la seule inconnue au moment de créer cette classe ayant... ce qui sera placé dans le tableau.

    Grace aux template, la bibliothèque standard fourni, dans le cas de std::vector un... modèle qui peut être utilisé pour créer un tableau capable de contenir "n'importe quel type de données", avec cependant la restriction que toutes les données que l'on pourra décider de placer dans un tableau spécifique devront toutes... être du même type.

    Le premier paramètre (et finalement, le seul dont on ait besoin dans une très large proportion des cas) que l'on doit donc indiquer entre les chevrons < et > étant... le type de donnée que l'on veut placer dans un tableau particulier.

    Ainsi, si on a besoin de maintenir en mémoire "un certain nombre" de valeurs numérique de type int, on déclarera le tableau en question sous une forme proche de std::vector<int> tab; // bien sur, tu choisi le nom "tab" selon ta convenance personnelle :D Mais, si tu as créé une structure (ou n'importe quel autre type défini par l'utilisateur) nommée MaStructure, et que tu veux en créer un tableau pour pouvoir "en contenir plusieurs", hé bien, il te suffira de déclarer le tableau sous la forme de std::vector<MaStructure> tab; // bien sur, tu choisi le nom "tab" selon ta convenance personnelle :D; et le compilateur se chargera du reste

    De la même manière, il est possible (et la bibliothèque standard ne s'est pas privé de le faire) de définir des fonctions pour lesquelles on ne sait peut-être pas le type réél des données que nous allons manipuler. Dans ce cas, le compilateur est (souvent) en mesure de déduire le type des données qui sont fournies comme paramètre.

    Par exemple, la fonction std::sort va s'attendre à recevoir au minimum deux itérateurs "de n'importe quelle sorte" (mais identiques), ainsi que la fonction à utiliser pour la comparaison.

    Nous pourrions donc avoir quelque chose comme
    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
    #include <algorithm> // pour std::sort
    #include <vector>    // pour std::vector
    #include <iostream>  // pour std::cout
    /* un programme simple, utilisant std::vector et std::sort */
    int main(){
        /* tout ce code utilise intensivement des fonctionnalités
         * issues de C++11
         */
        std::vector<int> tab={12,15,5,8,9,23,1};
        //affichons le tableau
        for(auto it : tab)
            std::cout<<it <<" ";
        std::cout<<"\n";
        /* trions le tableau */
        std::sort(tab.begin(), tab.end());
        //affichons une deuxième fois le tableau
        for(auto it : tab)
            std::cout<<it <<" ";
        std::cout<<"\n";
        return 0;
    }
    qui donnera le resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    12 15 5 8 23 1
    1 5 8 9 12 15 23
    Avoue que l'on ne peut pas faire plus simple, dans le principe, non

    Alors, bien sur, la création de fonctions et de classes template est sans doute un peu plus compliquée, mais, pour ce qui est de l'usage, tu remarque que c'est généralement des plus simples, non
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Quand je m'étais mis / remis an C++ il y a deux ans, j'avais pas mal accroché à ce site : https://www.tutorialspoint.com/cplusplus/index.htm C'est assez léger mais ça donne des bases et après j'avais fouillé le net (et notamment beaucoup lu cppreference.com, que je préfère comme les autres à cplusplus.com pour la documentation, même si certains articles type "cours" sont pas mal).

    En livre, le must à avoir être Effective C++ : https://www.aristeia.com/books.html Il faut déjà un bon niveau mais il te sort vraiment de ta zone de confort et te force à aller plus.

  8. #8
    Membre confirmé
    Homme Profil pro
    dev
    Inscrit en
    Février 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2018
    Messages : 119
    Par défaut
    Sympa ton site de tutos ! Merci !

    Je prends note de la référence de ton livre. Je me le prendrai probablement lorsque je maîtriserai un minimum le c++.

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

Discussions similaires

  1. Exploiter un code source sans documentation technique
    Par terminator01 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/07/2015, 15h17
  2. [WIP] Générer une documentation "exploitable"
    Par lildadou dans le forum EDI/Outils
    Réponses: 0
    Dernier message: 04/11/2010, 10h05
  3. [2008] Exploiter simplement la documentation xml générée
    Par piotrr dans le forum Visual Studio
    Réponses: 9
    Dernier message: 19/06/2009, 09h22
  4. Réponses: 2
    Dernier message: 05/09/2008, 10h34
  5. Réponses: 10
    Dernier message: 23/11/2006, 18h44

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