#include <algorithm> // , 。
#include <numeric> // accumulate( )
#include <vector>
#include <iostream>
using namespace std;
int testscore[] = {67, 56, 24, 78, 99, 87, 56};
//
bool passed_test(int n)
{
return n >= 60;
}
int main()
{
int total;
// , testscore
vector <int> vecTestScore(testscore,
testscore + sizeof(testscore) / sizeof(int));
vector <int>::iterator vi;
//
sort(vecTestScore.begin(), vecTestScore.end());
cout << "Sorted Test Scores:" << endl;
for (vi=vecTestScore.begin(); vi != vecTestScore.end(); vi++)
{ cout << *vi << ", "; }
cout << endl;
//
// min_element _iterator_ , 。
//“*” 。
vi = min_element(vecTestScore.begin(), vecTestScore.end());
cout << "The lowest score was " << *vi << "." << endl;
// min_element ,max_element 。
vi = max_element(vecTestScore.begin(), vecTestScore.end());
cout << "The highest score was " << *vi << "." << endl;
// (predicate function, vecTestScore.begin() vecTestScore.end()) 。
cout << count(vecTestScore.begin(), vecTestScore.end(), passed_test) <<
" out of " << vecTestScore.size() <<
" students passed the test" << endl;
//
cout <<vecTestScore.size() - count(vecTestScore.begin(),
vecTestScore.end(), passed_test) <<
" out of " << vecTestScore.size() <<
" students failed the test" << endl;
//
total = accumulate(vecTestScore.begin(),
vecTestScore.end(), 0);
//
cout << "Average score was " <<
(total / (int)(vecTestScore.size())) << endl;
return 0;
}