这是一个示例向量
vector<string> v;
v.push_back("one");
v.push_back("two");
v.push_back("three four");
v.push_back("five");
//打印
one
two
three four
five
我需要拆分元素号3,所以现在的矢量外观(不创建另一个矢量)
//打印
one
two
three
four
five
我应该使用迭代器还是简单循环?它应该也有很好的性能。
正如在评论中指出的那样,如果您正在插入元素进入向量(你将会),你必须避免使用无效的迭代器。不过,还是有一些类似的东西
std::vector<std::string> iter = v.begin();
while ( iter != v.end() ) {
std::string::iterator breakpoint = std::find( iter->begin(), iter->end(), ' ' );
if ( breakpoint == iter->end() ) {
++ iter;
} else {
std::string next( breakpoint + 1, iter->end() );
iter->erase( breakpoint, iter->end() );
iter = v.insert( iter + 1, next );
}
}
在这种情况下,我通常倾向于生成一个副本,然而。