2016-04-22 85 views
0

我正在尋找一種方法來使用std :: replace_if更新我當前在向量中的結構,而不是創建一個新的對象。C + +在STL結構向量中的替換向量

例如

std::vector<setting> settings; 

// ... add stuff to settings 

setting newsetting;  
std::string name = "something"; 

std::replace_if(settings.begin(), settings.end(), [&](setting const& v) 
{ 
    return v.name == name; 
}, newsetting); 

在這種情況下,我需要使用newsetting,有沒有什麼辦法,我可以在那裏引用我現有的矢量和更新的價值?我已經查找了這個問題,但只找到了一個解決方案,我想在STL中嚴格執行此操作。

謝謝。

回答

2

它看起來並不像你對我有什麼需要比花園式的各種範圍的迭代更看中的:

std::vector<setting> settings; 

for (auto &one_setting:settings) 
{ 
    if (one_setting.name == name) 
    { 
     one_setting.a_method_that_changes_this_setting_somehow(); 
    } 
} 
+0

我一直在尋找一個解決方案STL,並試圖這樣做,但這個工程呢。謝謝。 –