Où la norme C++ déclare-t-elle que la paire d'itérateurs passée à std::vector::insert
ne doit pas chevaucher la séquence d'origine?Le comportement du vecteur chevauché :: insert
Edit: Pour préciser, je suis assez sûr que la norme ne nécessite pas la bibliothèque standard pour gérer les situations comme ceci:
std::vector<int> v(10);
std::vector<int>::iterator first = v.begin() + 5;
std::vector<int>::iterator last = v.begin() + 8;
v.insert(v.begin() + 2, first, last);
Cependant, je ne pouvais pas trouver quoi que ce soit dans la norme, ce serait interdire les plages [first, last)
et [v.begin(), v.end())
de se chevaucher.
Merci beaucoup, c'est exactement ce que je cherchais. :-) – avakar
Assez sûr que vous voulez dire 'i' et' j', pas 'p'; 'p' * doit * être un itérateur dans le vecteur. –
Merci d'avoir rattrapé ce Rob. –