2016-04-22 20 views
0

私はstd :: replace_ifを使ってベクトルの現在の構造体を更新し、新しいオブジェクトを作成しない方法を探していました。私はnewsettingを使用する必要がある。この場合ベクトルのC++ replace_ifを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); 

、私は私の既存のベクトルを参照し、そこに値を更新することができます任意の方法はありますか?私はこの問題をすでに調べていましたが、これはSTLで厳密にやりたいと思っています。

ありがとうございました。

答えて

2

あなたはありふれた範囲の繰り返しよりも凝っ必要のように私には見えていません:私はSTLのソリューションを探していましたし、これを実行しないようにしようとしていたが、これはとにかく働く

std::vector<setting> settings; 

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

を。ありがとう。 –