線形間隔の値のセットを作成するファンクターがあります。. .
//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) );
これで、ラムダを使用してこれを対数スケールに簡単に変換できます...
auto lin = gen_lin(10.f,5.f);
std::generate_n(x.begin(), elements, [&](){return logf(lin());} );
しかし、すべてを 1 行にまとめようとすると、ベクトルは完全に logf(10.) の値で満たされます。
std::generate_n(x.begin(), elements, [](){return logf( gen_lin(10.f,5.f)() );} );
コードの最後の行を微調整して機能させることは可能ですか?