STL——vectorインスタンス運用(成績統計)


#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;
}