这是一个样本载体
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
我应该使用迭代器还是简单的循环?它也应该有很好的表现。
答案 0 :(得分:0)
正如评论中指出的那样,如果您正在插入 元素进入向量(你将成为),你必须避免 使用无效的迭代器。仍然是一些事情 以下内容应该有效:
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 );
}
}
在这种情况下,我通常更喜欢生成副本, 但是。