C ++如何从数组中的下一个可用位置填充数组?

时间:2016-06-22 16:20:16

标签: c++ arrays

我初始化了一个在运行时将填充值的数组,虽然我无法弄清楚如何使用值分配数组中的下一个可用位置。例如

int array[5];
for (int i=0; i<15; i++)
    if(i == 5 || i == 10)
        array[0] = i

我希望将第一个值5分配给数组[0],然后将第二个值10分配给数组[1]等。我将如何进行此操作?

3 个答案:

答案 0 :(得分:2)

您需要再增加一个变量nextAvailablePosition

array[nextAvailablePosition++] = 5;
array[nextAvailablePosition++] = 10;

或者只使用std::vector

答案 1 :(得分:2)

如果你想用5的递增倍数填充你的数组:

int array[5];
for(int i=0; i<5; i++) {
    array[i] = (i+1) * 5;
}

如果你想在5到10之间交替:

int array[5];
for(int i=0; i<5; i++) {
    array[i] = (i % 2 == 0) ? 5 : 10;
}

答案 2 :(得分:0)

看到数组将满足0到14之间的数字,因为你正在使用&lt;运算符(i&lt; 5),如果你想要在0和15之间,使用&lt; =

具体问题的答案是创建一个新变量

int array[5];
int aux = 0; //New variable
for (int i=0; i<15; i++){
      if(i == 5 || i == 10){
             array[aux] = i;
             aux++; // aux = aux+1
      }
}

但是在这种情况下,数组将满足i的值,没有必要使用循环,你可以这样做:

array[0] = 5;
array[1] = 10;

但也许你真正想要的是在数组中加入5的整数倍,所以在这种情况下,你可以注意到:

5的数字倍数是一个数字,当除以5时剩余的0为0,即:

if (number % 5 == 0){
      //number is multiple of 5
}

所以,如果你想把0和15之间的所有数字加5,你可以做的是:

int array[5];
int aux = 0; //New variable
for (int i=0; i<=15; i++){ // <= to use 15 too
      if(i%5){
             array[aux] = i;
             aux++; // aux = aux+1
      }
}

或者最好的方式:

int value = 5;
int array[5];
int aux = 0;
while(value <= 15) {
    array[aux] = value;
    aux++;
    value += 5; // value = value+5
}