C ++ replace_if on vector with STL中的struct

时间:2016-04-22 02:06:24

标签: c++ vector stl

我一直在寻找一种方法来使用std :: replace_if更新向量中的当前结构,而不是创建新对象。

例如

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,有什么方法可以引用我现有的向量并更新那里的值?我已经查找了这个问题,但只是在boost中找到了解决方案,我想在STL中严格执行此操作。

感谢。

1 个答案:

答案 0 :(得分:2)

我不认为你需要比花园种类范围迭代更有趣的东西:

std::vector<setting> settings;

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