使以下C ++代码简洁高效

时间:2015-11-21 23:04:12

标签: c++ coding-style

我有一个包含52个元素的数组,每个13个元素需要有1-13个值

示例:

// Referring arr to an array of 52 elements


arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
...
arr[10] = 11;
arr[11]] = 12;
arr[12] = 13;
arr[13] = 1;

and so on...

我想出的代码有4个循环,每次循环播放1到13次,我觉得它非常低效。

int j = 1;  
    for(int i = 0; i < 13; i++){
        deck[i].suit = 'H';
        deck[i].value = j;
        j++;
    }
    j = 1;
    for(int i = 13; i < 26; i++){
        deck[i].suit = 'D';
        deck[i].value = j;
        j++;
    }
    j = 1;
    for(int i = 26; i < 39; i++){
        deck[i].suit = 'S';
        deck[i].value = j;
        j++;
    }
    j = 1;
    for(int i = 39; i <= 51; i++){
        deck[i].suit = 'C';
        deck[i].value = j;
        j++;
    }

1 个答案:

答案 0 :(得分:6)

你是对的,你可以做得更好:

char suits[] = "HDSC";

for (int i = 0; i < 52; ++i) {
    deck[i].value = (i % 13) + 1; // this is a number from [1,13]
    deck[i].suit = suits[i / 13]; // i/13 is a number from [0,4)
}