在C++中,有没有办法将值添加到vector的中间?假设我有:
vector
vector <string> a; // a gets filled up with "abcd", "wertyu", "dvcea", "eafdefef", "aeefr", etc
我想把其中一个字符串分解,然后把所有的片段放回vector,我该怎么做呢?,分解的字符串可以在任何地方,index = 0,中间的某个地方,或者index = a.size() - 1。
a.size() - 1
bvuwiixz1#
您可以在位置i处插入vector,方法是写入
i
v.insert(v.begin() + i, valueToInsert);
然而,这不是很有效;它的运行时间与插入元素后的元素数成正比。如果您打算拆分字符串并将它们添加回去,那么最好使用std::list,它支持在任何地方进行O(1)插入和删除。
std::list
q3qa4bjr2#
您可以这样做,但速度会很慢:
int split = 3; // where to split a.insert(a.begin()+index, a[index].substr(0, split)); a[index+1] = a[index+1].substr(split);
au9on6nz3#
在这个例子中动态地找到向量中间并插入新元素。
std::vector <std::string> friends; friends.push_back("Ali"); friends.push_back("Kemal"); friends.push_back("Akin"); friends.push_back("Veli"); friends.push_back("Hakan"); // finding middle using size() / 2 int middleIndexRef = friends.size() / 2; friends.insert(friends.begin() + middleIndexRef, "Bob");
3条答案
按热度按时间bvuwiixz1#
您可以在位置
i
处插入vector
,方法是写入然而,这不是很有效;它的运行时间与插入元素后的元素数成正比。如果您打算拆分字符串并将它们添加回去,那么最好使用
std::list
,它支持在任何地方进行O(1)插入和删除。q3qa4bjr2#
您可以这样做,但速度会很慢:
au9on6nz3#
在这个例子中动态地找到向量中间并插入新元素。