Outils d'utilisateurs

Outils du Site


aide_memoire_syntaxe

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

aide_memoire_syntaxe [2014/06/01 00:42]
gbdivers créée
aide_memoire_syntaxe [2019/01/03 20:58] (Version actuelle)
nico [Fichier header]
Ligne 1: Ligne 1:
  
-^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[comment_realiser_les_exercices_de_ce_cours|Chapitre suivant]] ^+^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ 
 + 
 +__ utilité d'un tel aide mémoire de nos jours ? (internet, autocomplétion...)
  
 ====== Aide mémoire sur la syntaxe du C++ ====== ====== Aide mémoire sur la syntaxe du C++ ======
Ligne 6: Ligne 8:
 Ce document est destiné à retrouver facilement une syntaxe en C++ et à copier-coller le code d'exemple. Il est organisé selon le plan de l'ouvrage « Le langage C++ » de Bjarne Stroustrup . Les syntaxes spécifiques au C++11 sont indiquées à l'aide du tag [C++11]. Ce document ne donne pas d'explication sur les fonctionnalités présentées, pour cela, veuillez-vous référérer à un cours de C++. Ce document est destiné à retrouver facilement une syntaxe en C++ et à copier-coller le code d'exemple. Il est organisé selon le plan de l'ouvrage « Le langage C++ » de Bjarne Stroustrup . Les syntaxes spécifiques au C++11 sont indiquées à l'aide du tag [C++11]. Ce document ne donne pas d'explication sur les fonctionnalités présentées, pour cela, veuillez-vous référérer à un cours de C++.
  
-1.  Hello world+===== Hello world =====
  
 <code cpp> <code cpp>
Ligne 17: Ligne 19:
 </code> </code>
  
-2.  Les base du langage C+++===== Les base du langage C++ =====
  
-2.1.  Les types+==== Les types ====
  
   * Entier : int   * Entier : int
Ligne 28: Ligne 30:
   * Modificateur de signe : [signed], unsigned   * Modificateur de signe : [signed], unsigned
  
-2.2.  Les littérales+==== Les littérales ====
  
 Entiers Entiers
Ligne 74: Ligne 76:
 </code> </code>
  
-2.3.  Les variables+==== Les variables ====
  
 Variantes : Variantes :
Ligne 110: Ligne 112:
  
 Les types littérales Les types littérales
 +
 +<code cpp>
 char tab = '\t'; // tabulation char tab = '\t'; // tabulation
 char endl = '\n'; // fin de ligne char endl = '\n'; // fin de ligne
 const char* s = "une chaine de caractères"; const char* s = "une chaine de caractères";
 // les user string litterale [C++11] // les user string litterale [C++11]
 +</code>
 +
 Remarques Remarques
 +
 +<code cpp>
 char* s1 = "une chaine"; // const char* (compatiblité avec C) char* s1 = "une chaine"; // const char* (compatiblité avec C)
 s1[0] = 'U'; // erreur s1[0] = 'U'; // erreur
Ligne 120: Ligne 128:
 char s2[] = "une chaine"; // copie de la chaine dans le tableau char s2[] = "une chaine"; // copie de la chaine dans le tableau
 s2[0] = 'U'; // ok s2[0] = 'U'; // ok
 +</code>
  
 chaîne longue chaîne longue
 +
 +<code cpp>
 char* s = "abcdef" char* s = "abcdef"
           "ghijkl"; // s vaut "abcdzfghijkl"           "ghijkl"; // s vaut "abcdzfghijkl"
 +</code>
 +          
 Types réelles Types réelles
 +
 +<code cpp>
 float float
 double d = 123.456e-789; double d = 123.456e-789;
 long double long double
 1.23456789f ou 1.23456789F // littérale float 1.23456789f ou 1.23456789F // littérale float
 +</code>
 +
 Déclaration dans une condition Déclaration dans une condition
 +
 +<code cpp>
 for (int i=0; i<10; ++i) { } for (int i=0; i<10; ++i) { }
 if (double d = foo()) { /* si d n'est pas nul */ }  if (double d = foo()) { /* si d n'est pas nul */ } 
 +</code>
 +
 Opérateur sizeof : Opérateur sizeof :
 +
 +<code cpp>
 sizeof A; sizeof A;
 sizeof(A); sizeof(A);
Ligne 141: Ligne 164:
 sizeof(float) ≤ sizeof(double) ≤ sizeof(long double)  sizeof(float) ≤ sizeof(double) ≤ sizeof(long double) 
 sizeof(N) ≡ sizeof(signed N) ≡ sizeof(unsigned N)  sizeof(N) ≡ sizeof(signed N) ≡ sizeof(unsigned N) 
 +</code>
 +
 Obtenir des informations sur un type (http://www.cplusplus.com/reference/std/limits/numeric_limits/) Obtenir des informations sur un type (http://www.cplusplus.com/reference/std/limits/numeric_limits/)
 +
 +<code cpp>
 #include <limits> #include <limits>
 int m1 = numéric_limits<int>::min(); int m1 = numéric_limits<int>::min();
Ligne 147: Ligne 174:
 bool b1 = numéric_limits<int>::in_signed(); bool b1 = numéric_limits<int>::in_signed();
 bool b2 = numéric_limits<int>::in_integer(); bool b2 = numéric_limits<int>::in_integer();
 +</code>
 +
 Cast Cast
 +
 +<code cpp>
 static_cast<A>(a); // vérification à la compilation static_cast<A>(a); // vérification à la compilation
-dynamic_cast<A>(a); // vérification à l'éxecution +dynamic_cast<A>(a); // vérification à l’exécution 
-Non+
 reinterpret_cast<A>(a); // pas de vérification reinterpret_cast<A>(a); // pas de vérification
 const_cast<A>(a); // conversion de const const_cast<A>(a); // conversion de const
 +
 A a = b; // cast ou conversion implicite A a = b; // cast ou conversion implicite
 A a(b); // cast ou conversion implicite A a(b); // cast ou conversion implicite
 A a = (A) b; // cast explicite A a = (A) b; // cast explicite
 +</code>
 +
 Modificateur de déclaration Modificateur de déclaration
 +
 +<code cpp>
 const char tab = '\t'; // doit être initialisé lors de la déclaration const char tab = '\t'; // doit être initialisé lors de la déclaration
 static int i; static int i;
 mutable double d; // uniquement dans classe ? mutable double d; // uniquement dans classe ?
 extern float f; extern float f;
-2.4.  Constantes+</code> 
 + 
 +==== Constantes ==== 
 + 
 +<code cpp>
 const int i = 10; const int i = 10;
-const int[] v = { 1, 2, 3, 4 }; +const int[] v = { 1, 2, 3, 4 }; 
 +</code> 
 Pointeurs et références constantes Pointeurs et références constantes
 +
 +<code cpp>
 const int* p1 = &i; // pointeur vers constante const int* p1 = &i; // pointeur vers constante
 int* const p2 = &i; // pointeur constant int* const p2 = &i; // pointeur constant
 const int* const p3 = &i; // pointeur constant vers une constante const int* const p3 = &i; // pointeur constant vers une constante
 int const& r1 = i; // référence vers consante int const& r1 = i; // référence vers consante
-2.5.  Les énumération+</code> 
 + 
 +==== Les énumération ==== 
 + 
 +<code cpp>
 enum { ITEM1, ITEM2, ITEM3 }; // ITEM1 = 0, ITEM2 = 1; ITEM3 = 2 enum { ITEM1, ITEM2, ITEM3 }; // ITEM1 = 0, ITEM2 = 1; ITEM3 = 2
 enum E1 { ITEM1, ITEM2, ITEM3 }; // ITEM1 = 0, ITEM2 = 1; ITEM3 = 2 enum E1 { ITEM1, ITEM2, ITEM3 }; // ITEM1 = 0, ITEM2 = 1; ITEM3 = 2
Ligne 179: Ligne 227:
 // strong enum [C++11] // strong enum [C++11]
 // constexpr avec flag // constexpr avec flag
-2.6.  La définition de type Typedef+</code> 
 + 
 +==== La définition de type Typedef ==== 
 + 
 +<code cpp>
 typedef unsigned char uchar; typedef unsigned char uchar;
-2.7.  Les pointeurs+</code> 
 + 
 +==== Les pointeurs ==== 
 Déclaration Déclaration
 +
 +<code cpp>
 void* p1 = 0; void* p1 = 0;
 void* p2 = NULL; void* p2 = NULL;
 void* p3 = nullptr; [C++11] void* p3 = nullptr; [C++11]
 +</code>
 +
 Allocation et initialisation Allocation et initialisation
 +
 +<code cpp>
 float* p2 = new float; float* p2 = new float;
 float* p3 = new float(123.456f);  float* p3 = new float(123.456f); 
 new (&a) int; // placement new (&a) int; // placement
 new (&a) A(123); // placement et initialisation new (&a) A(123); // placement et initialisation
 +</code>
 +
 Destruction Destruction
 +
 +<code cpp>
 delete p3; delete p3;
 +</code>
 +
 Récupérer l'adresse d'une variable Récupérer l'adresse d'une variable
 +
 +<code cpp>
 int* pi = &i; int* pi = &i;
 +</code>
 +
 Manipuler les pointeurs Manipuler les pointeurs
 +
 +<code cpp>
 int x = *pi; int x = *pi;
 ++pi; ++pi;
Ligne 201: Ligne 274:
 pi + 3; pi + 3;
 pi – 3; pi – 3;
 +</code>
 +
 Cast Cast
 +
 +<code cpp>
 int* pi; int* pi;
 float* pf = pi; // erreur, conversion implicite interdit float* pf = pi; // erreur, conversion implicite interdit
 float* pf = static_cast<float>(pi); // conversion explicite, mais non sur float* pf = static_cast<float>(pi); // conversion explicite, mais non sur
 +</code>
 +
 Les pointeurs sur void Les pointeurs sur void
 +
 +<code cpp>
 int* pi; int* pi;
 void* pv = pi; // ok, conversion implicite void* pv = pi; // ok, conversion implicite
Ligne 211: Ligne 292:
 ++pv; // erreur ++pv; // erreur
 int* pi2 = static_cast<int*>(pv); // ok, conversion vers le type d'origine int* pi2 = static_cast<int*>(pv); // ok, conversion vers le type d'origine
 +</code>
 +
 Surcharge des opérateurs new et delete Surcharge des opérateurs new et delete
 +
 +<code cpp>
 void* operator new (size_t); void* operator new (size_t);
 void operator delete (void); void operator delete (void);
 void* operator new[] (size_t); void* operator new[] (size_t);
 void operator delete[] (void*); void operator delete[] (void*);
 +</code>
 +
 Exception lancée par new Exception lancée par new
 +
 +<code cpp>
 try { for (;;) new char[1000]; } // provoque une erreur dès que la mémoire sature try { for (;;) new char[1000]; } // provoque une erreur dès que la mémoire sature
 catch (bad_alloc) { cout << "erreur bad alloc" << endl; } catch (bad_alloc) { cout << "erreur bad alloc" << endl; }
Ligne 223: Ligne 312:
 set_new_handler(foo); set_new_handler(foo);
 for (;;) new char[1000]; // provoque une erreur dès que la mémoire sature => foo() for (;;) new char[1000]; // provoque une erreur dès que la mémoire sature => foo()
 +</code>
  
-2.8.  Les références+==== Les références ====  
 + 
 +<code cpp>
 int i = 1; int i = 1;
 int& r1 = i; // r est un alias de i int& r1 = i; // r est un alias de i
 ++r1; // i vaut 2 maintenant ++r1; // i vaut 2 maintenant
-extern int& r2; // ok, initialisation ailleure+extern int& r2; // ok, initialisation ailleurs 
 +</code> 
 Intialisation avec une litérrale : Intialisation avec une litérrale :
 +
 +<code cpp>
 int& r3 = 123; // erreur int& r3 = 123; // erreur
 const int& r3 = 123; // Ok, lvalue const int& r3 = 123; // Ok, lvalue
 +</code>
 +
 2.9.  Les tableaux 2.9.  Les tableaux
 Les tableaux à une dimension Les tableaux à une dimension
 +
 +<code cpp>
 int a1[10]; int a1[10];
 int a2[] = { 1, 2, 3, 4 }; // tableau de 4 éléments int a2[] = { 1, 2, 3, 4 }; // tableau de 4 éléments
 int a3[4] = { 1, 2, 3, 4 }; int a3[4] = { 1, 2, 3, 4 };
 int a3[8] = { 1, 2, 3, 4 }; // ajout de 4 éléments 0 à la fin int a3[8] = { 1, 2, 3, 4 }; // ajout de 4 éléments 0 à la fin
 +</code>
 +
 Pointeur sur tableau Pointeur sur tableau
 +
 +<code cpp>
 int v[] = { 1, 2, 3, 4 }; int v[] = { 1, 2, 3, 4 };
 int* p1 = v;  int* p1 = v; 
Ligne 247: Ligne 351:
 int* p4 = p1 + 2; // p4 pointe sur 3 int* p4 = p1 + 2; // p4 pointe sur 3
 int d = &v[2] - &v[0]; // d = 2 int d = &v[2] - &v[0]; // d = 2
 +</code>
 +
 Parcourir un tableau Parcourir un tableau
 +
 +<code cpp>
 int v[] = { 1, 2, 3, 4 }; int v[] = { 1, 2, 3, 4 };
 for (int i = 0; i < 4; ++i) { int x = v[i]; } for (int i = 0; i < 4; ++i) { int x = v[i]; }
 for (int* p = &v[0]; p != &v[4]; ++p) { int x = *p; } for (int* p = &v[0]; p != &v[4]; ++p) { int x = *p; }
 +</code>
 +
 Les tableaux à N dimensions Les tableaux à N dimensions
 +
 +<code cpp>
 int a2[15][20]; int a2[15][20];
 +</code>
 +
 Tableaux dynamiques Tableaux dynamiques
 +
 +<code cpp>
 int* pi; int* pi;
 int i = pi[i]; // cast  int i = pi[i]; // cast 
- 
 int* table = new[10] int; int* table = new[10] int;
 table[i]; table[i];
 delete[] table; delete[] table;
 +</code>
 +
 2.10.  Les espaces de nom 2.10.  Les espaces de nom
 +
 +<code cpp>
 namespace std {} namespace std {}
 using namespace std; using namespace std;
Ligne 266: Ligne 385:
  
 ::nom; // espace de nom global ::nom; // espace de nom global
-2.11.  Ordre de priorité des opérateurs+</code> 
 + 
 +==== Ordre de priorité des opérateurs ==== 
  
  
 Priorité : de haut en bas, et de gauche à droite pour les opérateurs unaires et de droite à gauche pour les binaires. Priorité : de haut en bas, et de gauche à droite pour les opérateurs unaires et de droite à gauche pour les binaires.
-3.  Directives de compilation + 
-3.1.  Les directives d'inclusion+===== Directives de compilation ===== 
 + 
 +==== Les directives d'inclusion ==== 
 +<code cpp>
 #include "file/nomfichier.h" #include "file/nomfichier.h"
 #include <vector> // classe de la STL #include <vector> // classe de la STL
 +</code>
 +
 3.2.  Les commentaires 3.2.  Les commentaires
 +
 +<code cpp>
 // commentaire sur une seule ligne // commentaire sur une seule ligne
 /* commentaire /* commentaire
Ligne 280: Ligne 408:
 plusieurs plusieurs
 lignes */ lignes */
-3.3.  Fichier header+</code> 
 +==== Fichier header ====
  
 +<code cpp>
 // dans mon_fichier.h // dans mon_fichier.h
 #ifndef MONFICHIER_H #ifndef MONFICHIER_H
Ligne 301: Ligne 431:
     std::cout << "Salut tout le monde !" << std::endl;     std::cout << "Salut tout le monde !" << std::endl;
  
-4.  Les fonctions +</code> 
-4.1.  Précisions sémantiques+ 
 +===== Les fonctions ===== 
 + 
 +==== Précisions sémantiques ==== 
 + 
 +<code cpp>
 void f(int i) {} // i est un paramètre void f(int i) {} // i est un paramètre
 f(j); // j est un argument f(j); // j est un argument
Ligne 319: Ligne 454:
     // la fonction const et non const n'ont pas les mêmes signatures     // la fonction const et non const n'ont pas les mêmes signatures
 // static ? Inline ? // static ? Inline ?
 +</code>
 +
 4.2.  Déclaration d'une fonction 4.2.  Déclaration d'une fonction
 +
 +<code cpp>
 void f(); // sans paramètre de retour void f(); // sans paramètre de retour
  
Ligne 335: Ligne 474:
  
 void* f(); // retourne un pointeur void* f(); // retourne un pointeur
-4.3.  Passage de paramètres+</code> 
 +==== Passage de paramètres ==== 
 + 
 +<code cpp>
 int i = 0; int i = 0;
 void f1(int& i) { ++i; } // passage par référence void f1(int& i) { ++i; } // passage par référence
Ligne 360: Ligne 502:
     }     }
 } }
-4.6.  Fonction static+</code> 
 + 
 +==== Fonction static ==== 
 + 
 +<code cpp> 
 static void foo() {} static void foo() {}
-4.7.  Fonction variadique+ 
 +</code> 
 + 
 +==== Fonction variadique ==== 
 + 
 +<code cpp>
 void f(... args) { void f(... args) {
 } }
-4.8.  Les pointeurs de fonctions+</code> 
 + 
 +==== Les pointeurs de fonctions ==== 
 + 
 +<code cpp>
 int (f*) (int a); int (f*) (int a);
-5.  Les classes et structures +</code> 
-5.1.  Syntaxe de bases+ 
 +===== Les classes et structures ===== 
 + 
 + 
 +==== Syntaxe de bases ==== 
 + 
 +<code cpp>
 struct A { int x, y; }; // définition de la structure struct A { int x, y; }; // définition de la structure
 A a; // déclaration de la variable a de type A A a; // déclaration de la variable a de type A
Ligne 387: Ligne 549:
 f(); // erreur f(); // erreur
 g(a); // erreur g(a); // erreur
 +</code>
 +
 Forme canonique de Coplien Forme canonique de Coplien
 +
 +<code cpp>
 struct A { struct A {
     A() {} // constructeur par défaut     A() {} // constructeur par défaut
Ligne 396: Ligne 562:
     A& operator= (A&& a); // affectation par déplacement [C++11]     A& operator= (A&& a); // affectation par déplacement [C++11]
 }; };
 +</code>
 +
 Constructeurs Constructeurs
 +
 +<code cpp>
 struct A { struct A {
     A(); // constructeur par défaut     A(); // constructeur par défaut
Ligne 408: Ligne 578:
 A a2(a); // constructeur par copie A a2(a); // constructeur par copie
 A a3 = a; // opérateur de copie A a3 = a; // opérateur de copie
 +</code>
 +
 Initialisation Initialisation
 +
 +<code cpp>
 struct A { int x; }; struct A { int x; };
 A a1; // initialisation avec les valeurs par défaut A a1; // initialisation avec les valeurs par défaut
Ligne 431: Ligne 605:
  
 // Tableau d'initialisation // Tableau d'initialisation
 +
 struct A { int x, y, z; }; struct A { int x, y, z; };
 A a = { 1, 2, 3 }; A a = { 1, 2, 3 };
 +</code>
 +
 Accès aux variables et fonctions membres Accès aux variables et fonctions membres
 +
 +<code cpp>
 A a; A a;
 a.x; a.x;
Ligne 445: Ligne 624:
 a.*pi; a.*pi;
 pa->*pi; pa->*pi;
 +</code>
 +
 Conversion Conversion
 +
 +<code cpp>
 struct A { struct A {
     A(B const& b); // conversion implicite de B vers A     A(B const& b); // conversion implicite de B vers A
Ligne 452: Ligne 635:
     explicit operator B() const; // conversion implicite de A vers B [C++11]     explicit operator B() const; // conversion implicite de A vers B [C++11]
 }; };
-5.2.  Les variables membres+</code> 
 +==== Les variables membres ==== 
 + 
 +<code cpp>
 a.x; // accès  a.x; // accès 
-5.3.  Fonctions membres+</code>
  
 +==== Fonctions membres ====
 +
 +<code cpp>
 a.x; // accès  a.x; // accès 
-5.4.  Opérateurs+</code> 
 +==== Opérateurs ==== 
 + 
 +<code cpp>
 Foncteurs (objets fonctions) Foncteurs (objets fonctions)
 struct A { struct A {
Ligne 464: Ligne 656:
     void operator() (B const& b, C const& c); // foncteur à deux argments     void operator() (B const& b, C const& c); // foncteur à deux argments
 }; };
 +</code>
 +
 Déréfencement Déréfencement
 +
 +<code cpp>
 class PtrA { // classe pointeur sur A class PtrA { // classe pointeur sur A
     A* p;     A* p;
Ligne 473: Ligne 669:
     // operator. interdit !     // operator. interdit !
 }; };
 +</code>
 +
 Incrémentation et décrémentation Incrémentation et décrémentation
 +
 +<code cpp>
 struct A { struct A {
     A& operator++ (); // préfixe : ++a     A& operator++ (); // préfixe : ++a
Ligne 480: Ligne 680:
     A operator-- (int); // postfixe : a--     A operator-- (int); // postfixe : a--
 }; };
-5.5.  Héritage+</code> 
 + 
 +==== Héritage ==== 
 Héritage simple Héritage simple
 +
 +<code cpp>
 struct A {}; struct A {};
 struct B1 : A {}; // héritage privé struct B1 : A {}; // héritage privé
Ligne 487: Ligne 692:
 struct B : protected A {}; // héritage protected struct B : protected A {}; // héritage protected
 struct B : private A {}; // héritage privé struct B : private A {}; // héritage privé
 +</code>
 +
 Héritage multiple Héritage multiple
 +
 +<code cpp>
 struct A {}; struct A {};
 struct B {}; struct B {};
 struct C : public A, public B {}; // hérite de A et B struct C : public A, public B {}; // hérite de A et B
 +</code>
 +
 Constructeur Constructeur
 +
 +<code cpp>
 struct A {}; struct A {};
 struct B1 : public A  struct B1 : public A 
Ligne 497: Ligne 710:
     B() : A() {}     B() : A() {}
 }; };
-Fonctions vituelles+</code> 
 + 
 +Fonctions virtuelles 
 + 
 +<code cpp>
 struct A { struct A {
     virtual ~A(); // obligatoire si au moins une fonction virtuelle     virtual ~A(); // obligatoire si au moins une fonction virtuelle
Ligne 503: Ligne 720:
     virtual f(); // fonction virtuelle     virtual f(); // fonction virtuelle
 }; };
 +</code>
 +
 Classe abstraite Classe abstraite
 +
 +<code cpp>
 struct A { // ne possède que des fonctions virtuelles pures struct A { // ne possède que des fonctions virtuelles pures
     virtual f() = 0; // fonction virtuelle pure     virtual f() = 0; // fonction virtuelle pure
 }; };
-6.  Les structures de contrôle+</code> 
 + 
 +===== Les structures de contrôle ===== 
 + 
 +<code cpp>
 break, continue, return break, continue, return
-6.1.  if+</code> 
 +==== if ==== 
 + 
 +<code cpp>
 if (condition) statement if (condition) statement
 if (condition) { statement } if (condition) { statement }
 if (condition) statement else statement if (condition) statement else statement
-6.2.  switch+</code> 
 +==== switch ==== 
 + 
 +<code cpp>
 swicth (key) { swicth (key) {
     case ITEM1 : (…) break;     case ITEM1 : (…) break;
Ligne 519: Ligne 750:
     default : (…)     default : (…)
 } }
-6.3.  while et do+</code> 
 + 
 +==== while et do ==== 
 + 
 +<code cpp>
 while (condition) statement while (condition) statement
 do f() while (condition) do f() while (condition)
 do { … } while (condition) do { … } while (condition)
-6.4.  for+</code> 
 +==== for ==== 
 + 
 +<code cpp>
 int v[] = { 1, 2, 3, 4 }; int v[] = { 1, 2, 3, 4 };
 for (;;) {} // forever for (;;) {} // forever
 for (int i = 0; i < 4; ++i) { int x = v[i]; } for (int i = 0; i < 4; ++i) { int x = v[i]; }
 for (int* p = &v[0]; p != &v[4]; ++p) { int x = *p; } for (int* p = &v[0]; p != &v[4]; ++p) { int x = *p; }
-6.5.  try et catch+</code> 
 + 
 +==== try et catch ==== 
 + 
 +<code cpp>
 try {} handler_list try {} handler_list
-6.6.  goto+</code> 
 + 
 +==== goto ==== 
 + 
 +<code cpp>
 goto identifier; goto identifier;
 identifier : statement identifier : statement
-7.  La surcharge des opérateurs+</code> 
 + 
 +===== La surcharge des opérateurs ===== 
 + 
 +<code cpp>
 void* operator new(size_t); void* operator new(size_t);
 void operator delete(void*); void operator delete(void*);
 void* operator new[](size_t); void* operator new[](size_t);
 void operator delete[](void*); void operator delete[](void*);
-8.  Les templates+</code> 
 + 
 +===== Les templates ===== 
 + 
 +<code cpp>
 Les fonctions template Les fonctions template
 template<class T> f() {} template<class T> f() {}
 Les classes template Les classes template
 template<class T> class A {}; template<class T> class A {};
-9.  Les exceptions+</code> 
 + 
 +===== Les exceptions ===== 
 + 
 +<code cpp>
 try { … } try { … }
 catch (bad_alloc) { … } catch (bad_alloc) { … }
-10.  La bibliothèque standard+</code> 
 + 
 +===== La bibliothèque standard ===== 
 Utiliser une classe de la STL directement : Utiliser une classe de la STL directement :
 +
 +<code cpp>
 std::vector<int> v; std::vector<int> v;
 +</code>
 +
 Utiliser une classe de l'espace de nom std : Utiliser une classe de l'espace de nom std :
 +
 +<code cpp>
 using std::vector; using std::vector;
 vector<int> v; vector<int> v;
 +</code>
 +
 Utiliser toutes les classes de l'espace de nom std : Utiliser toutes les classes de l'espace de nom std :
 +
 +<code cpp>
 using namespace std; using namespace std;
 vector<int> v; vector<int> v;
 +</code>
 +
 Quelques fichiers de la bibliothèque standard Quelques fichiers de la bibliothèque standard
 +
 +<code cpp>
 <iostream> <iostream>
 <cctype> => fonction isalpha(), etc. <cctype> => fonction isalpha(), etc.
-10.1.  Les conteneurs +</code> 
-10.1.1.  Les séquences + 
-10.1.1.1.  vector+==== Les conteneurs ==== 
 + 
 +=== Les séquences === 
 + 
 +== vector == 
 + 
 +<code cpp>
 vector<int> v1; // vecteur de 0 élément vector<int> v1; // vecteur de 0 élément
 vector<int> v2(100); // vecteur de 100 éléments initialisés avec 0 vector<int> v2(100); // vecteur de 100 éléments initialisés avec 0
Ligne 567: Ligne 848:
 int& i = v[0]; int& i = v[0];
 int* p = &v[0]; // pointeur vers le premier élément int* p = &v[0]; // pointeur vers le premier élément
-10.1.1.2.  list+</code>
  
-10.1.1.3.  deque+== list ==
  
-10.1.1.4.  stack+== deque ==
  
-10.1.1.5.  queue+== stack ==
  
-10.1.1.6.  priority_queue+== queue ==
  
-10.1.2.  Les conteneurs associatifs +== priority_queue == 
-10.1.2.1.  map+ 
 +=== Les conteneurs associatifs === 
 + 
 +== map == 
 + 
 +<code cpp>
 map<string, double> table; map<string, double> table;
 table["pi"] = 3.14159265358979; table["pi"] = 3.14159265358979;
-10.1.2.2.  multimap+</code>
  
-10.1.2.3.  set+== multimap ==
  
-10.1.2.4.  multiset+== set ==
  
-10.1.3.  Les autres conteneurs +== multiset ==
-10.1.3.1.  bitset+
  
-10.1.3.2.  valarray+=== Les autres conteneurs ===
  
-10.1.4.  C++11+== bitset == 
 + 
 +== valarray == 
 + 
 +=== C++11 === 
 + 
 +<code cpp>
 unordered_set<T> unordered_set<T>
 unordered_multiset<T>  unordered_multiset<T> 
Ligne 599: Ligne 890:
 forward_list<T> forward_list<T>
 array<T, N> array<T, N>
-10.1.5.  Créer son propre conteneur+</code>
  
-10.2.  Les algorithmes +=== Créer son propre conteneur === 
-10.2.1.  Les algorithmes non modifiant+ 
 +==== Les algorithmes ==== 
 + 
 +=== Les algorithmes non modifiant === 
 + 
 +<code cpp>
 10.2.1.1.  foreach 10.2.1.1.  foreach
  
Ligne 626: Ligne 922:
  
 10.2.1.12.  search_n 10.2.1.12.  search_n
 +</code>
  
-10.2.2.  Les algorithmes modifiants+===Les algorithmes modifiants=== 
 + 
 +<code cpp>
 10.2.2.1.  transform 10.2.2.1.  transform
  
Ligne 677: Ligne 976:
  
 10.2.2.25.  random_shuffle 10.2.2.25.  random_shuffle
 +</code>
  
-10.2.2.26.  C++11+== C++11 == 
 +<code cpp>
 bool all_of(Iter first, Iter last, Pred pred)  bool all_of(Iter first, Iter last, Pred pred) 
 bool any_of(Iter first, Iter last, Pred pred)  bool any_of(Iter first, Iter last, Pred pred) 
 bool none_of(Iter first, Iter last, Pred pred)  bool none_of(Iter first, Iter last, Pred pred) 
 +
 Iter find_if_not(Iter first, Iter last, Pred pred)  Iter find_if_not(Iter first, Iter last, Pred pred) 
 +
 OutIter copy_if(InIter first, InIter last, OutIter result, Pred pred) OutIter copy_if(InIter first, InIter last, OutIter result, Pred pred)
 OutIter copy_n(InIter first, Size n, OutIter result)  OutIter copy_n(InIter first, Size n, OutIter result) 
 +
 uninitialized_copy_n(InIter first, Size n, OutIter result) uninitialized_copy_n(InIter first, Size n, OutIter result)
 +
 OutIter move(InIter first, InIter last, OutIter result) OutIter move(InIter first, InIter last, OutIter result)
-OutIter move_backward(InIter first, InIter last, result) s +OutIter move_backward(InIter first, InIter last, result)  
-is_partitioned(InIter first, InIter last, Pred pred) + 
 +sis_partitioned(InIter first, InIter last, Pred pred)  
 pair<OutIter1, OutIter2> partition_copy(InIter first, InIter last, OutIter1 out_true, OutIter2 out_false, Pred pred) pair<OutIter1, OutIter2> partition_copy(InIter first, InIter last, OutIter1 out_true, OutIter2 out_false, Pred pred)
 +
 Iter partition_point(Iter first, Iter last, Pred pred)  Iter partition_point(Iter first, Iter last, Pred pred) 
 +
 RAIter partial_sort_copy(InIter first, InIter last, RAIter result_first, RAIter result_last)  RAIter partial_sort_copy(InIter first, InIter last, RAIter result_first, RAIter result_last) 
 RAIter partial_sort_copy(InIter first, InIter last, RAIter result_first, RAIter result_last, Compare comp) RAIter partial_sort_copy(InIter first, InIter last, RAIter result_first, RAIter result_last, Compare comp)
 +
 bool is_sorted(Iter first, Iter last) bool is_sorted(Iter first, Iter last)
 bool is_sorted(Iter first, Iter last, Compare comp)  bool is_sorted(Iter first, Iter last, Compare comp) 
 +
 Iter is_sorted_until(Iter first, Iter last) Iter is_sorted_until(Iter first, Iter last)
 Iter is_sorted_until(Iter first, Iter last, Compare comp)  Iter is_sorted_until(Iter first, Iter last, Compare comp) 
 +
 bool is_heap(Iter first, Iter last) Vrai si [first, last)  bool is_heap(Iter first, Iter last) Vrai si [first, last) 
 bool is_heap(Iter first, Iter last, Compare comp) bool is_heap(Iter first, Iter last, Compare comp)
 +
 Iter is_heap_until(Iter first, Iter last)  Iter is_heap_until(Iter first, Iter last) 
 Iter is_heap_until(Iter first, Iter last, Compare comp)  Iter is_heap_until(Iter first, Iter last, Compare comp) 
 +
 T min(initializer_list<T> t) T min(initializer_list<T> t)
 T min(initializer_list<T> t, Compare comp) T min(initializer_list<T> t, Compare comp)
 T max(initializer_list<T> t) T max(initializer_list<T> t)
 T max(initializer_list<T> t, Compare comp) T max(initializer_list<T> t, Compare comp)
 +
 pair<const T&, const T&> minmax(const T& a, const T& b) pair<const T&, const T&> minmax(const T& a, const T& b)
 pair<const T&, const T&> minmax(const T& a, const T& b, Compare comp)  pair<const T&, const T&> minmax(const T& a, const T& b, Compare comp) 
Ligne 711: Ligne 1026:
 pair<Iter, Iter> minmax_element(Iter first, Iter last) pair<Iter, Iter> minmax_element(Iter first, Iter last)
 pair<Iter, Iter> minmax_element(Iter first, Iter last, Compare comp) pair<Iter, Iter> minmax_element(Iter first, Iter last, Compare comp)
 +
 void iota(Iter first, Iter last, T value) void iota(Iter first, Iter last, T value)
 +</code>
 10.3.  Iterateurs et allocateurs 10.3.  Iterateurs et allocateurs
  
-10.4.  Les chaînes de caractères +==== Les chaînes de caractères ==== 
-10.4.1.  Opérations sur les caractères+ 
 +=== Opérations sur les caractères === 
 + 
 +<code cpp>
 Char c = ' '; Char c = ' ';
 bool t = isspace(c); // test si est une espace bool t = isspace(c); // test si est une espace
 bool t = isdigit(c); // test si est un chiffre bool t = isdigit(c); // test si est un chiffre
 bool t = isalpha(c); // test si est une lettre bool t = isalpha(c); // test si est une lettre
-10.4.2.  Manipuler les chaînes de caractères+</code> 
 + 
 +=== Manipuler les chaînes de caractères === 
 + 
 +<code cpp>
 bool t = isalnum(c); // test si est un chiffre ou une lettre bool t = isalnum(c); // test si est un chiffre ou une lettre
 string s; string s;
 s = "une chaine de caractères"; s = "une chaine de caractères";
 string s2 = "une autre chaine"; string s2 = "une autre chaine";
-10.4.3.  manipuler les chaînes style C+</code> 
 + 
 +=== manipuler les chaînes style C === 
 + 
 +<code cpp>
 strlen() strlen()
 strcpy() strcpy()
 strcmp() strcmp()
-10.5.  Les flux +</code> 
-10.5.1.  Flux de sortie+==== Les flux ==== 
 + 
 +=== Flux de sortie === 
 + 
 +<code cpp>
 cout << "un message" << endl; cout << "un message" << endl;
 cerr << "une erreur" << endl; cerr << "une erreur" << endl;
 clog << "une information" << endl; clog << "une information" << endl;
-10.5.2.  Flux d'entrée+</code> 
 + 
 +=== Flux d'entrée === 
 + 
 +<code cpp>
 cin >> i; // lecture cin >> i; // lecture
 char c; char c;
 cin.get(c); cin.get(c);
-10.5.3.  Flux sur les chaines de caractères+</code> 
 + 
 +=== Flux sur les chaines de caractères === 
 + 
 +<code cpp>
 #include <sstream> #include <sstream>
 istream* input; istream* input;
 input = new istringstream(argv[1]) ; input = new istringstream(argv[1]) ;
-10.5.4.  Flux sur les fichiers+</code> 
 + 
 +=== Flux sur les fichiers === 
 + 
 +<code cpp>
 ifstream ifstream
-10.6.  Les fonctions numériques+</code> 
 + 
 +===== Les fonctions numériques ==== 
 + 
 +<code cpp>
 fsqrt() fsqrt()
-11.  A trier+</code> 
 + 
 +===== A trier ===== 
 + 
 +<code cpp>
 typeid(int); // évaluation à la compilation typeid(int); // évaluation à la compilation
 typeid(a); // évaluation à l'éxécution typeid(a); // évaluation à l'éxécution
 extern extern
 namespace namespace
- +</code>
-12.  Index+
aide_memoire_syntaxe.1401576169.txt.gz · Dernière modification: 2014/06/01 00:42 par gbdivers