添加到std :: vector的中间

时间:2011-01-26 01:40:57

标签: c++ string vector

有没有办法在C ++中将值添加到vector的中间?说我有:

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

我希望打破其中一个字符串并将所有部分放回vector。我该怎么办?我打破的字符串可以是任何地方,索引= 0,中间某处或索引= a.size() - 1

2 个答案:

答案 0 :(得分:9)

您可以通过编写

插入位置vector的{​​{1}}
i

然而,这不是很有效;它在插入元素后与元素数量成比例地运行。如果您打算拆分字符串并重新添加它们,那么最好使用v.insert(v.begin() + i, valueToInsert); ,它支持在任何地方插入和删除O(1)。

答案 1 :(得分:1)

你可以这样做,但它会很慢:

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