Добавление к середине std :: vector - PullRequest
4 голосов
/ 26 января 2011

Есть ли способ добавить значения в середину vector в C ++?Скажем, у меня есть:

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

, и я хочу разбить одну из струн и вернуть все части обратно в vector.Как бы я это сделал?разбитые строки могут быть где угодно, index = 0, где-то посередине или index = a.size() - 1.

Ответы [ 2 ]

9 голосов
/ 26 января 2011

Вы можете вставить в vector в позиции i, написав

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

Однако это не очень эффективно; он работает во времени, пропорциональном количеству элементов после вставляемого элемента. Если вы планируете разделить строки и добавить их обратно, вам гораздо лучше использовать std::list, который поддерживает вставку и удаление O (1) везде.

1 голос
/ 26 января 2011

Вы можете сделать это, но это будет очень медленно:

int split = 3; // where to split
a.insert(a.begin()+index, a[index].substr(0, split));
a[index+1] = a[index+1].substr(split);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...