【发布时间】:2017-08-23 15:53:57
【问题描述】:
假设我有这样一个类:
class SpinSystem{
private:
int L;
int L2;
const int k=1, J=1;
const int teq, tcorr;
const double TC=2/log(1+sqrt(2.0));//TC=2.269;
double Temp;
int Nmuestras;
int s[L][L]; int E,M;
int Cluster[L2][2]; int write;
public:
void set_values(int, double, int);
};
void SpinSystem::set_values(int length, double temperature, int nsamples){
L = length;
Temp = temperature;
Nmuestras = nsamples;
L2 = length*length;
teq = (int)(10*pow(length/8.0,0.58));
tcorr = (int)(1*pow(length/8.0,0.58));
}
私有变量 L2, teq, tcorr 取决于 L 的值。这就是为什么我使用 set_values 方法设置它们的值。但是,我必须定义一些数组,例如 s[L][L] 和 Cluster[L2][2],它们的大小显然取决于 L。我该如何实现呢?提前致谢。
【问题讨论】:
-
您需要动态分配(和释放)内存。查看关键字 new,然后在您了解使用 unique_ptr 后不要忘记释放它。
-
使用
std::vector? -
我发现的最佳 SO 帖子 - stackoverflow.com/questions/936687/… 。网格解决方案非常适合保留类 C 的行为和保留线性内存空间。