C++11 (Source: Iterator Invalidation des Règles (C++0x))
Insertion
Les conteneurs de séquence
-
vector
: tous les itérateurs et les références avant le point d'insertion ne sont pas affectées, à moins que le nouveau conteneur de la taille est supérieure à la capacité précédente (dans ce cas, tous les itérateurs et les références sont invalidés) [23.3.6.5/1]
-
deque
: tous les itérateurs et les références sont invalidés, à moins que le insérée membre est à la fin (avant ou arrière) de la deque (dans ce cas, tous les itérateurs sont invalidés, mais les références à des éléments ne sont pas affectés) [23.3.3.4/1]
-
list
: tous les itérateurs et les références affectée [23.3.5.4/1]
-
forward_list
: tous les itérateurs et les références affectée (s'applique à l' insert_after
) [23.3.4.5/1]
-
array
: (n/a)
Conteneurs associatifs
-
[multi]{set,map}
: tous les itérateurs et les références affectée [23.2.4/9]
Des ménagères de conteneurs associatifs
-
unordered_[multi]{set,map}
: tous les itérateurs invalidé lors de la redéfinition de se produit, mais les références affectée [23.2.5/8]. La redéfinition de ne pas se produire si l'insertion n'est pas la cause du conteneur de la taille de dépasser z * B
où z
est le maximum du facteur de charge et B
le nombre de seaux. [23.2.5/14]
Conteneur des adaptateurs
-
stack
: hérité de conteneur sous-jacent
-
queue
: hérité de conteneur sous-jacent
-
priority_queue
: hérité de conteneur sous-jacent
L'effacement
Les conteneurs de séquence
-
vector
: chaque itérateur de référence et après le point d'effacement est invalidé [23.3.6.5/3]
-
deque
: effacer le dernier élément invalide seulement les itérateurs et les références pour les éléments effacés et le passé, à la fin de l'itérateur; effacer le premier élément invalide seulement les itérateurs et les références pour les éléments effacés; l'effacement de tous les autres éléments invalide tous les itérateurs et les références (y compris le passé, à la fin de l'itérateur) [23.3.3.4/4]
-
list
: seuls les itérateurs et les références à la effacées élément est invalidé [23.3.5.4/3]
-
forward_list
: seuls les itérateurs et les références à la effacées élément est invalidé (s'applique à l' erase_after
) [23.3.4.5/1]
-
array
: (n/a)
Conteneurs associatifs
-
[multi]{set,map}
: seuls les itérateurs et les références pour les éléments effacés sont invalidés [23.2.4/9]
Non ordonnée conteneurs associatifs
-
unordered_[multi]{set,map}
: seuls les itérateurs et les références pour les éléments effacés sont invalidés [23.2.5/13]
Conteneur des adaptateurs
-
stack
: hérité de conteneur sous-jacent
-
queue
: hérité de conteneur sous-jacent
-
priority_queue
: hérité de conteneur sous-jacent
Le redimensionnement
-
vector
: conformément à insérer/effacer [23.3.6.5/12]
-
deque
: conformément à insérer/effacer [23.3.3.3/3]
-
list
: conformément à insérer/effacer [23.3.5.3/1]
-
forward_list
: conformément à insérer/effacer [23.3.4.5/25]
-
array
: (n/a)
Note 1
À moins d'indication contraire(soit
explicitement ou par la définition d'une fonction
en ce qui concerne les autres fonctions), en invoquant
un conteneur en fonction de membre ou de passage
un conteneur comme un argument pour une
fonction de la bibliothèque ne doit pas invalider
les itérateurs , ou modifier les valeurs de,
les objets à l'intérieur du conteneur.
[23.2.1/11]
Note 2
pas de swap() la fonction invalide toute
des références, des indicateurs ou des itérateurs
en se référant aux éléments de la
les conteneurs d'être échangé. [ Note: L'
fin() itérateur ne fait pas référence à
élément, de sorte qu'il peut être invalidé.
-la note de fin ] [23.2.1/10]
Note 3
Autres que la réserve mentionnée ci-dessus concernant l' swap()
, il n'est pas clair si "fin" les itérateurs sont soumis à l'énumérés ci-dessus, par-conteneur des règles; vous devez supposer que, de toute façon, qu'ils sont.
Note 4
vector
et tous les non-ordonnée des conteneurs associatifs de soutien reserve(n)
qui garantit qu'aucun redimensionnement automatique se poursuivront au moins jusqu'à ce que la taille du récipient pousse à l' n
. Des précautions doivent être prises avec non ordonnée conteneurs associatifs en raison d'une future proposition permettra à la spécification d'un minimum de facteur de charge, ce qui permettrait à la redéfinition de se produire sur insert
après un nombre suffisant d' erase
des opérations de réduire la taille du conteneur en dessous du minimum; la garantie doit être considéré comme potentiellement nulle après un erase
.