簡體   English   中英

進一步拆分向量中的一些元素的最佳方法

[英]Best way to further split some elements in vector

這是一個示例向量

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

在這種情況下,我通常更喜歡生成副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM