【问题标题】:C++ replace_if on vector with struct in STLC++ replace_if 在 STL 中带有结构的向量
【发布时间】:2016-04-22 02:06:23
【问题描述】:

我正在寻找一种方法来使用 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 中严格执行此操作。

谢谢。

【问题讨论】:

    标签: c++ vector stl


    【解决方案1】:

    在我看来,您不需要比花园品种范围迭代更花哨的东西:

    std::vector<setting> settings;
    
    for (auto &one_setting:settings)
    {
        if (one_setting.name == name)
        {
             one_setting.a_method_that_changes_this_setting_somehow();
        }
    }
    

    【讨论】:

    • 我一直在寻找一个 STL 解决方案,并试图不这样做,但这仍然有效。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    相关资源
    最近更新 更多