gpt4 book ai didi

c++ - 是否可以使用循环来声明多个变量?并创建文件?

转载 作者:行者123 更新时间:2023-11-27 22:52:45 26 4
gpt4 key购买 nike

我出于物理目的自学了(某种程度上)c++,所以如果这是一个简单的问题,我深表歉意。我尝试使用 Google 自行寻找答案,但没有找到任何有用的信息(可能是因为我不确定要使用哪种搜索词)。

对于我的 C++ 程序,我必须像这样声明 100 个(或更多)变量:

vector< vector<double> > pol1_t1_matrix(SPACE_pol, vector<double>(2));
vector< vector<double> > pol1_t2_matrix(SPACE_pol, vector<double>(2));
vector< vector<double> > pol1_t3_matrix(SPACE_pol, vector<double>(2));
vector< vector<double> > pol1_t4_matrix(SPACE_pol, vector<double>(2));
vector< vector<double> > pol1_t5_matrix(SPACE_pol, vector<double>(2));
vector< vector<double> > pol1_t6_matrix(SPACE_pol, vector<double>(2));
vector< vector<double> > pol1_t7_matrix(SPACE_pol, vector<double>(2));
vector< vector<double> > pol1_t8_matrix(SPACE_pol, vector<double>(2));
vector< vector<double> > pol1_t9_matrix(SPACE_pol, vector<double>(2));
vector< vector<double> > pol1_t10_matrix(SPACE_pol, vector<double>(2));
etc.;

我也用这些写文件如下:

ofstream outputFile_2D_pol1_t1("gnu_2D_pol1_t1_matrix_2sol_num.dat"); 
for(i=0;i<SPACE_pol;i=i+1)
{
outputFile_2D_pol1_t1 << x_begin + (i * h_pol) << setw(18);
outputFile_2D_pol1_t1 << pol1_t1_matrix[i][1] << setw(18);
outputFile_2D_pol1_t1 << endl;
}
outputFile_2D_pol1_t1.close();

ofstream outputFile_2D_pol1_t2("gnu_2D_pol1_t2_matrix_2sol_num.dat");
for(i=0;i<SPACE_pol;i=i+1)
{
outputFile_2D_pol1_t2 << x_begin + (i * h_pol) << setw(18);
outputFile_2D_pol1_t2 << pol1_t2_matrix[i][1] << setw(18);
outputFile_2D_pol1_t2 << endl;
}
outputFile_2D_pol1_t2.close();

ofstream outputFile_2D_pol1_t3("gnu_2D_pol1_t3_matrix_2sol_num.dat");
for(i=0;i<SPACE_pol;i=i+1)
{
outputFile_2D_pol1_t3 << x_begin + (i * h_pol) << setw(18);
outputFile_2D_pol1_t3 << pol1_t3_matrix[i][1] << setw(18);
outputFile_2D_pol1_t3 << endl;
}
outputFile_2D_pol1_t3.close();

etc.;

如果我必须执行 100 次以上(至少到 t100,但有时我必须执行 1000 次或更多次),上述操作将变得非常费力。所以我的问题是:有没有办法使用(单独的)循环来完成上述所有操作?

天真地,我假设它看起来像这样(以替换上面所示的费力的“变量声明”):

for(i=1;i<101;i=i+1)
{
double (pol1_t"i"_matrix)[2] = new double[SPACE_pol][2];
}

和(替换上面所示的费力的“写入文件”):

for(i=1;i<101;i=i+1)
{
ofstream outputFile_2D_pol1_t"i"("gnu_2D_pol1_t"i"_matrix_2sol_num.dat");
for(j=0;j<SPACE_pol;j=j+1)
{
outputFile_2D_pol1_t"i" << x_begin + (j * h_pol) << setw(18);
outputFile_2D_pol1_t"i" << pol1_tj_matrix[i][1] << setw(18);
outputFile_2D_pol1_t"i" << endl;
}
outputFile_2D_pol1_t"i".close();
}

最佳答案

您不想使用 new,尤其是原始指针。我相信您的程序目前因此而泄漏内存。坚持使用嵌套 vector 。

您可以嵌套三个 vector ,但使用为此设计的类可能会更容易,例如 Boost.MultiArray

关于c++ - 是否可以使用循环来声明多个变量?并创建文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35930818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com