struct

时间:2019-03-11 13:57:27

标签: c++ arrays vector struct

我想将值赋给结构中的向量/数组。像下面这样。但是,以下代码会产生错误,并且无法编译。

struct Params
{

    float a = 1.132;
    vector<float> v(100);

    for (int n = 0; n < 100; ++n)
    {
        v[n] = n*a;
    }
};

如何用我想填充的值填充v,并将v保存在结构中?谢谢。

2 个答案:

答案 0 :(得分:2)

将代码放入这样的构造器中:

Params() {
    v.resize(100);
    for (int n = 0; n < 100; ++n)
    {
        v[n] = n * a;
    }
}

这样,当您创建Params时,它已经使用您的值进行了初始化:

Params a;
std::cout << a.v[10] << std::endl;

例如,这将打印11.32

答案 1 :(得分:1)

您可以将代码放在构造函数上(是一个好的解决方案)。 如果由于某种原因,您不想声明一个构造方法,则可以执行下一个解决方法:

struct Params {
    float a = 1.132f;
    std::vector<float> vec {
        [this] {
            std::vector<float> v(100);
            for (int n = 0; n < 100; ++n)
            {
                v[n] = n*this->a;
            }
            return v;
        }()
    };
};

Lambda函数在“ Params”实例化上被调用。

在我的拙见中,最好还是使用一个构造函数来说明。