Aggiunta al centro di std :: vector

C’è un modo per aggiungere valori al centro di un vector in C ++? Dì che ho:

 vector  a; // a gets filled up with "abcd", "wertyu", "dvcea", "eafdefef", "aeefr", etc 

e voglio spezzare una delle corde e rimettere tutti i pezzi nel vector . Come potrei farlo? le stringhe che spezzo possono essere ovunque, index = 0, da qualche parte nel mezzo, o index = a.size() - 1 .

Puoi inserire in un vector in posizione i scrivendo

 v.insert(v.begin() + i, valueToInsert); 

Tuttavia, questo non è molto efficiente; funziona in tempo proporzionale al numero di elementi dopo l’inserimento dell’elemento. Se stai pianificando di dividere le stringhe e di aggiungerle di nuovo, è molto meglio usare una std::list che supporta O (1) inserimento e cancellazione ovunque.

Puoi farlo, ma sarà molto lento:

 int split = 3; // where to split a.insert(a.begin()+index, a[index].substr(0, split)); a[index+1] = a[index+1].substr(split);