24小时热门版块排行榜    

查看: 391  |  回复: 3

好好学习444

银虫 (小有名气)

[求助] c++语言可以选择定义数组吗? 已有2人参与

比如:
         if(j<4)
                 double pgroupr[18];               
        else if(j<6&&j>=4)
                double pgroupr[15];
        else if(j>=6)
                double pgroupr[12];                              
        for(int am=0;am<natom_g;am++)
        {                                  
                                                                                                                                 
                pgroupr[am]  = vec_distance(x[ (first_g_num -1)+ i*50+ am], new_ow);
                pgroupr[am+natom_g]= vec_distance(x[ (first_g_num -1)+ i*50+ am], new_hw1);
                pgroupr[am+2*natom_g]= vec_distance(x[ (first_g_num -1)+ i*50+ am], new_hw2);  
               
                //pgroupr[am+2*oxygen_num]= vec_distance(x[ (o_lipid[4] -3)+ i*50+ am],new_hw2);
        }       
函数部分,想实现如果进来的j  值不同就定义不同数组长度,可是没编译通过。有什么方法可以让我实现呢,帮忙看看实现if  else  语句那里定义根据不同的进来  j 值 。定义不同数组。把它们拆开来,可以。不知道大牛们有没有好的简洁方法啊。
        if(j<4)
                 double pgroupr[18];               
        else if(j<6&&j>=4)
                double pgroupr[15];
        else if(j>=6)
                double pgroupr[12];
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

说好努力的
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhenwuhuang

至尊木虫 (文学泰斗)

【答案】应助回帖

感谢参与,应助指数 +1
神一样的学问,不懂。此曲只有天上有,人间哪得几回闻
2楼2015-04-19 16:24:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zeppe

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
好好学习444: 金币+30, ★★★★★最佳答案, 谢谢了,思维短路了,忘记向量的push back可以自动扩展了,我是计算模拟,希望以后有问题可以向你请教一下!! 2015-04-19 19:03:51
建议楼主看一下std::vector这个类的用法。
CODE:
#include <iostream>
#include <vector>

int main()
{
    for (int j = 0; j < 10; ++j) // change j for test
    {
        size_t pgroupr_size;
        if (j < 4)
        {
            pgroupr_size = 18;
        }
        else if (j < 6 && j >= 4)
        {
            pgroupr_size = 15;
        }
        else if (j >= 6)
        {
            pgroupr_size = 12;
        }
        std::vector<double> pgroupr(pgroupr_size);

        std::cout << "j: " << j << ", vecsize: " << pgroupr.size() << std::endl;
    }

    return 0;
}

输出是pgroupr的size
j: 0, vecsize: 18
j: 1, vecsize: 18
j: 2, vecsize: 18
j: 3, vecsize: 18
j: 4, vecsize: 15
j: 5, vecsize: 15
j: 6, vecsize: 12
j: 7, vecsize: 12
j: 8, vecsize: 12
j: 9, vecsize: 12
3楼2015-04-19 17:01:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zeppe

金虫 (小有名气)

【答案】应助回帖

如果实在不想用std::vector,也可以直接定义。
CODE:
        size_t pgroupr_size;
        if (j < 4)
        {
            pgroupr_size = 18;
        }
        else if (j < 6 && j >= 4)
        {
            pgroupr_size = 15;
        }
        else if (j >= 6)
        {
            pgroupr_size = 12;
        }
        double pgroupr[pgroupr_size];

4楼2015-04-19 17:06:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 好好学习444 的主题更新
信息提示
请填处理意见