Hal ini mungkin layak menambahkan bahwa iterator insert apapun ( std::back_insert_iterator
, std::front_insert_iterator
, std::insert_iterator
) dijamin untuk tetap berlaku selama semua sisipan dilakukan melalui iterator ini dan tidak ada yang independen iterator-membatalkan acara lainnya terjadi.
Sebagai contoh, ketika Anda melakukan serangkaian operasi penyisipan ke dalam std::vector
dengan menggunakan std::insert_iterator
sangat mungkin bahwa penyisipan ini akan memicu realokasi vektor, yang akan membatalkan semua iterator yang "menunjuk" ke dalam vektor itu. Namun, masukkan iterator yang dipermasalahkan dijamin tetap valid, yakni Anda dapat melanjutkan urutan penyisipan dengan aman. Tidak perlu khawatir tentang memicu realokasi vektor sama sekali.
Ini, sekali lagi, hanya berlaku untuk penyisipan yang dilakukan melalui iterator penyisipan itu sendiri. Jika acara iterator-invalidating dipicu oleh beberapa aksi independen pada container, maka iterator insert menjadi invalidated juga sesuai dengan aturan umum.
Misalnya kode ini
std::vector<int> v(10);
std::vector<int>::iterator it = v.begin() + 5;
std::insert_iterator<std::vector<int> > it_ins(v, it);
for (unsigned n = 20; n > 0; --n)
*it_ins++ = rand();
dijamin untuk melakukan urutan penyisipan yang valid ke dalam vektor, bahkan jika vektor "memutuskan" untuk merelokasi di suatu tempat di tengah proses ini. Iterator it
jelas akan menjadi tidak valid, tetapi it_ins
akan tetap valid.