I. Qu'est-ce qu'un vector ?
Un vector est un conteneur de séquence qui encapsule un tableau de taille dynamique. Comme tout autre type de conteneur, il peut stocker des objets de types variés. On peut simplement le considérer comme un tableau dynamique pouvant contenir des éléments de n'importe quel type.
II. Caractéristiques du conteneur
1. Séquence ordonnée
Les éléments d’un conteneur de séquence sont disposés dans un ordre linéaire strict. L’élément correspondant est accessible par sa position dans la séquence.
2. Tableau dynamique
Prend en charge un accès direct rapide à tout élément de la séquence, et cela peut même être fait via l’arithmétique des pointeurs. Il permet un ajout/suppression relativement rapide d’éléments à la fin de la séquence.
3. Compatible avec l’allocateur
Le conteneur utilise un objet allocateur pour gérer dynamiquement ses besoins de stockage.
III. Implémentation des fonctions de base
1. Constructeurs- vector() : crée un vecteur vide
- vector(int nSize) : crée un vecteur de nSize éléments
- vector(int nSize, const t& t) : crée un vecteur de nSize éléments, tous de valeur t
- vector(const vector&) : constructeur de copie
- vector(begin,end) : copie les éléments d'un autre tableau dans l'intervalle [begin,end) dans le vecteur
2. Fonctions d'ajout
- void push_back(const T& x) : ajoute un élément X à la fin du vecteur
- iterator insert(iterator it, const T& x) : insère un élément x avant l'élément pointé par l'itérateur dans le vecteur
- iterator insert(iterator it, int n, const T& x) : insère n éléments identiques x avant l'élément pointé par l'itérateur dans le vecteur
- iterator insert(iterator it, const_iterator first, const_iterator last) : insère des données d'un autre vecteur du même type dans l'intervalle [first,last) avant l'élément pointé par l'itérateur dans le vecteur
3. Fonctions de suppression
- iterator erase(iterator it) : supprime l'élément pointé par l'itérateur dans le vecteur
- iterator erase(iterator first, iterator last) : supprime les éléments dans le vecteur dans l'intervalle [first,last)
- void pop_back() : supprime le dernier élément du vecteur
- void clear() : efface tous les éléments du vecteur
4. Fonctions de parcours
- reference at(int pos) : renvoie une référence à l'élément à la position pos
- reference front() : renvoie une référence au premier élément
- reference back() : renvoie une référence au dernier élément
- iterator begin() : renvoie le pointeur de tête du vecteur, pointant vers le premier élément
- iterator end() : renvoie le pointeur de queue du vecteur, pointant vers la position après le dernier élément
- reverse_iterator rbegin() : itérateur inverse, pointant vers le dernier élément
- reverse_iterator rend() : itérateur inverse, pointant vers la position avant le premier élément
5. Fonctions de test
- bool empty() const : détermine si le vecteur est vide ; s'il est vide, le vecteur n'a aucun élément
6. Fonctions de taille
- int size() const : renvoie le nombre d'éléments dans le vecteur
- int capacity() const : renvoie le nombre maximal d'éléments que le vecteur actuel peut contenir
- int max_size() const : renvoie le nombre maximal autorisé d'éléments dans le vecteur
7. Autres fonctions
- void swap(vector&) : échange les données de deux vecteurs de même type
- void assign(int n, const T& x) : attribue la valeur x aux n premiers éléments du vecteur
- void assign(const_iterator first, const_iterator last) : affecte aux éléments du vecteur les éléments de [first,last)
8. Pour plus de clarté
1. push_back : ajoute un élément de données à la fin du tableau
2. pop_back : supprime le dernier élément de données du tableau
3. at : obtient la donnée à la position numérotée
4. begin : obtient le pointeur vers le début du tableau
5. end : obtient le pointeur vers l'élément suivant le dernier élément du tableau
6. front : obtient une référence à la tête du tableau
7. back : obtient une référence au dernier élément du tableau
8. max_size : obtient la taille maximale possible du vector
9. capacity : la taille actuellement allouée du vector
10. size : la taille des données actuellement utilisées
11. resize : modifie la taille des données actuellement utilisées ; si elle est supérieure à l'utilisation actuelle, elle remplit avec des valeurs par défaut
12. reserve : modifie la taille de l'espace actuellement alloué pour le vector
13. erase : supprime l'élément de données pointé par le pointeur
14. clear : vide le vector actuel
15. rbegin : retourne le pointeur de début du vector inversé (en fait, le end original - 1)
16. rend : retourne le pointeur de fin du vector inversé (en fait, le begin original - 1)
17. empty : détermine si le vector est vide
18. swap : échange des données avec un autre vecteur
IV. Utilisation de base
#include < vector> using namespace std;
V. Brève introduction
- Vector<type> identifiant
- Vector<type> identifiant(capacité maximale)
- Vector<type> identifiant(capacité maximale, valeur initiale pour tous les éléments)
- Int i[5]={1,2,3,4,5}
Vector<type> vi(I, i+2); // obtenir la valeur après que la valeur d'index i vaut 3 - Vector< vector< int> >v; // vecteur à deux dimensions. Remarque : le <> extérieur doit avoir un espace ; sinon, il ne compilera pas sur les anciens compilateurs.
Exemple
1. Exemple de pop_back() et push_back(elem) : suppression et insertion de données à la fin du conteneur
Exemple
Le résultat de sortie est:
0,1,2,3,4,5,6,7,8,9, 0,1,2,3,4,
2. clear() efface toutes les données dans le conteneur
Exemple
Le résultat de sortie est:
0,1,2,3,4,5,6,7,8,9,
3. Tri
Exemple
Le résultat de sortie est:
从小到大: 0,1,3, 从大到小: 3,1,0,
1. Notez que sort nécessite un fichier d'en-tête#include <algorithm>
2. Si vous voulez que sort trie par ordre décroissant, vous pouvez réécrire sort
bool compare(int a,int b)
{
return a< b; //升序排列,如果改为return a>b,则为降序
}
int a[20]={2,4,1,23,5,76,0,43,24,65},i;
for(i=0;i<20;i++)
cout<< a[i]<< endl;
sort(a,a+20,compare);
4. Accès (accès direct au tableau & accès par itérateur)
Exemple
Le résultat de sortie est:
直接利用数组:0 1 2 3 4 5 6 7 8 9 利用迭代器:0 1 2 3 4 5 6 7 8 9
5. Deux méthodes pour définir un tableau à deux dimensions (même résultat)
Méthode 1
Méthode 2
Le résultat de sortie est:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Adresse d'origine : http://blog.csdn.net/w_linux/article/details/71600574