在C ++中创建数组的特定结构

时间:2019-02-05 15:06:06

标签: arrays global-variables structure constants

我想在C ++中创建一个结构,其中一些元素是数组(如以下代码)。我想允许用户从控制台声明变量的数量,即nVar(就像在main函数中注释的那样)。这是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 :(得分:0)

您要创建动态尺寸的数组。

您需要指针。

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]的地址为velocityvelocity[1]的地址为velocity + sizeof(double),依此类推...

寻找具有动态大小的 C ++数组