C++ 根据参数将数组分为5个不同的数组

C++ 根据参数将数组分为5个不同的数组,c++,arrays,multidimensional-array,C++,Arrays,Multidimensional Array,所以我正在写一个程序,我需要生成100个随机分数,然后根据它们的值对它们进行分类。一种为100-90,另一种为89-70;69-50; 49-20; 19比0 for(int i = 0; i < 100; i++){ grades[i] = rand() % 100 + 1; } for(int i=0;i

所以我正在写一个程序,我需要生成100个随机分数,然后根据它们的值对它们进行分类。一种为100-90,另一种为89-70;69-50; 49-20; 19比0

for(int i = 0; i < 100; i++){
    grades[i] = rand() % 100 + 1;  
}
for(int i=0;i<100;i++){
等级[i]=rand()%100+1;
}
我创建了一个循环,将随机生成的数字存储到给定的数组grades[100],并希望根据上面给定的信息将它们再分类为五个数组。我尝试用另外五个嵌套循环来创建另一个循环,其中设置了一个if条件,用于等级,并使用数组的大小-1来存储if,但意识到它出了问题,因为我不得不定义存储它的数组。因此,执行sizeof arrayEX[100]将始终返回100,并且我将该值连续存储到同一索引(99)中


我如何将一个数组正确地分离并存储到另一个数组中,尤其是因为我不知道将有多少个值进入数组,所以无法定义数组?

使用
std::vector

std::vector<std::vector<int>> gradeBuckets(5);
for(int i = 0; i < 100; i++){
    int grade = rand() % 100 + 1;

    if (grade < 20) {
        gradeBuckets[0].push_back(grade);
    } else if(grade < 50) {
        gradeBuckets[1].push_back(grade);
    } else if ...
std::向量分级桶(5);
对于(int i=0;i<100;i++){
int grade=rand()%100+1;
if(等级<20){
平地铲斗[0]。推回(平地);
}否则,如果(等级<50){
平地铲斗[1]。推回(平地);
}否则如果。。。

使用
std::vector

std::vector<std::vector<int>> gradeBuckets(5);
for(int i = 0; i < 100; i++){
    int grade = rand() % 100 + 1;

    if (grade < 20) {
        gradeBuckets[0].push_back(grade);
    } else if(grade < 50) {
        gradeBuckets[1].push_back(grade);
    } else if ...
std::向量分级桶(5);
对于(int i=0;i<100;i++){
int grade=rand()%100+1;
if(等级<20){
平地铲斗[0]。推回(平地);
}否则,如果(等级<50){
平地铲斗[1]。推回(平地);
}否则如果。。。

为什么不使用STL?例如,它可以很好地解决这一问题:

for(int i = 0; i < 100; i++){
    grades[i] = rand() % 100 + 1;  
}

std::vector<int> gradeA, gradeB, gradeC, gradeD, gradeE;
for(int i = 0; i < 100; i++){
    if (grades[i]>=90)
        gradeA.push_back(grades[i]);
    else if (grades[i]>=70)
        gradeB.push_back(grades[i]);
    else if (grades[i]>=50)
        gradeC.push_back(grades[i]);
    else if (grades[i]>=20)
        gradeD.push_back(grades[i]);
    else
        gradeE.push_back(grades[i]);
}
for(int i=0;i<100;i++){
等级[i]=rand()%100+1;
}
std::媒介等级A、B、C、等级E、等级E;
对于(int i=0;i<100;i++){
如果(等级[i]>=90)
A级。推回(等级[i]);
否则,如果(等级[i]>=70)
B级。推回(等级[i]);
否则,如果(等级[i]>=50)
C级。推回(等级[i]);
否则,如果(等级[i]>=20)
分级。推回(分级[i]);
其他的
等级E.推回(等级[i]);
}

为什么不使用STL?例如,它可以很好地解决这一问题:

for(int i = 0; i < 100; i++){
    grades[i] = rand() % 100 + 1;  
}

std::vector<int> gradeA, gradeB, gradeC, gradeD, gradeE;
for(int i = 0; i < 100; i++){
    if (grades[i]>=90)
        gradeA.push_back(grades[i]);
    else if (grades[i]>=70)
        gradeB.push_back(grades[i]);
    else if (grades[i]>=50)
        gradeC.push_back(grades[i]);
    else if (grades[i]>=20)
        gradeD.push_back(grades[i]);
    else
        gradeE.push_back(grades[i]);
}
for(int i=0;i<100;i++){
等级[i]=rand()%100+1;
}
std::媒介等级A、B、C、等级E、等级E;
对于(int i=0;i<100;i++){
如果(等级[i]>=90)
A级。推回(等级[i]);
否则,如果(等级[i]>=70)
B级。推回(等级[i]);
否则,如果(等级[i]>=50)
C级。推回(等级[i]);
否则,如果(等级[i]>=20)
分级。推回(分级[i]);
其他的
等级E.推回(等级[i]);
}

谢谢!我的教授从来没有教过我vector,所以我从来没有用过它,我想它比new(?)好,因为它在c9中的效果不如我的ide(idk为什么)谢谢!我的教授从来没有教过我vector,所以我从来没有用过它,我想它比new(?)好,因为它在c9中的效果不如我的ide(idk为什么)