最好的方法是进一步分割向量中的一些元素

Best way to further split some elements in vector

本文关键字:向量 元素 进一步 方法 分割      更新时间:2023-10-16

这是一个示例向量

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 );
    }
}

在这种情况下,我通常倾向于生成一个副本,然而。