如下代码所示,10个人减去最大值和最小值求平均数,但是并没有生成成功,当我将sort(lDoGrade.begin(), lDoGrade.end()); //将容器进行排序这行注释掉后,就不会出现问题,各位知道是什么原因吗?
//第一轮评委打分
void speakerManager::FirstDoGrade()
{
for (vector<speaker>::iterator it = vFirst.begin(); it != vFirst.end(); it++)
{
//10名评委进行打分
list<int>lDoGrade; //创建容器记录评委打的分数
for (int i = 0; i < 10; i++)
{
srand(time(nullptr)); // 用当前时间作为种子
int randomValue = (rand() % (100 - 60 + 1)) + 60; //范围[min,max] 生成随机数
lDoGrade.push_back(randomValue);
}
sort(lDoGrade.begin(), lDoGrade.end()); //将容器进行排序
//删除最大值和最小值
lDoGrade.pop_front();
lDoGrade.pop_back();
//求出平均值
int grade = 0;
for (list<int>::iterator it = lDoGrade.begin(); it != lDoGrade.end(); it++)
{
grade += *it;
}
grade /= lDoGrade.size();
cout << grade << endl;
}
}