[英]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.