微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c++ STL库deque和vector的例子

 

文件wuyong.h:

#pragma once
#include<iostream>
#include<vector>
#include<deque>
#include<algorithm>
#include<string>
using namespace std;
class Player
{
public:
    Player(){}
    Player(string name, int score) :mName(name), mscore(score){}
    ~Player(){}

public:
    string mName;
    int mscore;
};

void Creat_Player(vector<Player>& v)
{
    string nameSeed ="ABCDE";
    for (int i = 0; i < 5; i++)
    {
        Player p;
        p.mName = "选手";
        p.mName += nameSeed[i];
        p.mscore = 0;
        v.push_back(p);
        
    }
}
void printscore(int val)
{
    cout << val << "  ";
}
void Set_score(vector<Player>& v)
{
    for (vector<Player>::iterator it = v.begin(); it != v.end(); it++)
    {
        //对当前学生进行打分
        deque<int> dscore;
        for (int i = 0; i < 10; i++)
        {
            int score = rand() % 41 + 60;
            dscore.push_back(score);
        }
        sort(dscore.begin(), dscore.end());
        //for_each(dscore.begin(), dscore.end(),printscore);
        //cout << endl;
        //去除最高分和最低分
        dscore.pop_front();
        dscore.pop_back();
        int totlescore = 0;
        for (deque<int>::iterator dit = dscore.begin(); dit != dscore.end(); dit++)
        {
            totlescore += (*dit);
            int avescore = totlescore / dscore.size();
            //保存分数
            (*it).mscore = avescore;
        }
    }
}
bool mycompare(Player& p1,Player& p2)
{
    return p1.mscore > p2.mscore;
}
//分数排名 sort认从小到大,希望从大到小
void Print_Rank(vector<Player>& v)
{
    sort(v.begin(), v.end(), mycompare);
    for (vector<Player>::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << "姓名:" << (*it).mName << "  得分:  " << (*it).mscore << endl;
    }
}
View Code

文件wuyong.cpp:

#include"wuyong.h"
int main()
{
    vector<Player> vPlist;
    Creat_Player(vPlist);
    Set_score(vPlist);
    Print_Rank(vPlist);

    system("pause");
    return 0;
}
View Code

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐