Создать определенную структуру массива в C ++ - PullRequest
0 голосов
/ 05 февраля 2019

Я хочу создать структуру в C ++, в которой некоторые ее элементы являются массивами (как в следующем коде).Я хотел бы позволить пользователю объявлять количество переменных, то есть, nVar, из консоли (как то, что прокомментировано в основной функции).Это в то время как C ++ заставляет меня объявлять постоянную и глобальную переменную для nVar.

Есть ли способ решить мою проблему?Большое спасибо заранее.

#include <iostream>
using namespace std;

const int nVar = 50;

struct Particle{
    double ObjVal;
    double BestObjVal;
    double Position[nVar];
    double Velocity[nVar];
    double BestPosition[nVar];
};

int main() {
// int nVar;
// cout << "Enter the number of variables: " << endl;
// cin >> nVar;
...
}

1 Ответ

0 голосов
/ 05 февраля 2019

Вы хотите создать массивы динамического размера.

Вам нужны указатели.

struct Particle{
  double objVal;
  double bestObjVal;
  double* position;
  double* velocity;
  double* bestPosition;
};

Указатель - это адрес памяти переменной определенного типа.В этом примере вы указываете на позицию первого double значения массива.

В теле:

Particicle p;
...
std::cin >> nVar;
p.velocity = new double[nVar];

Код означает: я хочу nVar удваивается исохранить первую позицию в velocity.Итак, velocity[0] имеет адрес velocity, velocity[1] имеет адрес velocity + sizeof(double) и так далее ...

Ищите массив C ++ с динамическим размером

...