Установить значения массива в структуре - PullRequest
0 голосов
/ 11 марта 2019

Я хотел бы дать значения для вектора / массива в структуре.Что-то вроде следующего.Однако следующий код выдает ошибки и не может скомпилироваться.

struct Params
{

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

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

Как мне заполнить v значением, которое я бы хотел заполнить, и сохранить v в структуре?Спасибо.

Ответы [ 2 ]

2 голосов
/ 11 марта 2019

Поместите код в конструктор следующим образом:

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 голос
/ 11 марта 2019

Вы можете поместить код в конструктор (это хорошее решение).Если по какой-то причине вы не хотите объявлять конструктор, вы можете сделать следующий обходной путь:

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;
        }()
    };
};

Лямбда-функция вызывается при создании экземпляра «Params».

Также, по моему скромному мнению, лучше использовать конструктор для ясности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...