我有一個函數創建一組線性間隔的值。 。 。結合函子和lambda表達式
//Linear spaced generator
struct gen_lin {
float mi, inc;
public:
gen_lin(float _mi=1.f, float _inc=1.f) : mi(_mi), inc(_inc){};
float operator()() {
return mi+=inc;
}
};
我可以填補像這樣值的向量...
const size_t elements = 400;
std::vector<float> x(elements);
std::generate_n(x.begin(), elements, gen_lin(10.f,5.f));
現在,我可以用這個像這樣一個lambda容易轉化爲對數刻度...
auto lin = gen_lin(10.f,5.f);
std::generate_n(x.begin(), elements, [&](){return logf(lin());});
但是當我嘗試擠它全部在一條線,將載體完全充滿logf的值(10)
std::generate_n(x.begin(), elements, [](){return logf( gen_lin(10.f,5.f)());});
爲什麼還有可能調整我的最後一行代碼以使其工作?