2016-04-22 86 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,并试图这样做,但这个工程呢。谢谢。 –