2015-07-01 188 views
0

的名單有這樣的結構:修改列表

std::list<std::list<std::string>> data; 

我需要去THROU頂層列表,並追加內部列表對一些標準。這樣的事情:

std::for_each(data.begin(), data.end(), 
       [<some variable required for the logic>] 
       (const std::list<std::string>& int_list) { 
     if(...) 
       int_list.push_back(...); 
    }); 

你看到這段代碼是無效的,因爲for_each不能修改序列。 你會推薦我如何執行我所需要的(不需要修改初始數據結構)?

+0

你能不能用['transform'(http://en.cppreference.com/w/cpp/algorithm/transform)? – EdChum

+0

轉換需要額外的副本,不是嗎?從謂詞返回 – amigo421

+0

https://www.youtube.com/watch?v=YQs6IC-vgmo bjarne Stroustrup:爲什麼你應該避免列表 –

回答

1

您可以使用C++ 11 ranged based for loops像:

std::list<std::list<std::string>> data; 
for (auto & e : data) 
{ 
    if (some_condition) 
     e.push_back(some_data) 
} 
+0

好主意!非常感謝。讓我檢查一下 – amigo421