#include <iostream>
#include <array>
#include <vector>
#include <map>
#include <algorithm>
struct PlayerScoreBoardInfo
{
std::string name;
unsigned int kill, death, suicide;
unsigned int scorestreak;
PlayerScoreBoardInfo()
{
kill = death = suicide = scorestreak = 0;
name = "";
}
explicit PlayerScoreBoardInfo( std::string strname, unsigned int nkill, unsigned int ndeath, unsigned int nsuicide, unsigned int nscorestreak ) :
name(strname), kill(nkill), death(ndeath), suicide(nsuicide), scorestreak(nscorestreak)
{
}
};
class GameArenaManager
{
private:
GameArenaManager() {}
public:
std::map<u_long, PlayerScoreBoardInfo> m_Infos;
public:
static GameArenaManager& GetInstance()
{
static GameArenaManager InstanceObj;
return InstanceObj;
}
};
template <typename T1, typename T2> inline void SortVecFromMap( std::map<T1,T2>& maptodosort, std::vector<T2>& vectosort )
{
std::vector<T1> feedvector;
feedvector.reserve( maptodosort.size() );
for( const auto& it : maptodosort )
feedvector.push_back(it.second.kill);
std::sort(feedvector.begin(), feedvector.end(), std::greater<T1>());
for(const auto& itV : feedvector ) {
for( const auto& itM : maptodosort ) {
if( itM.second.kill == itV ) {
vectosort.push_back(itM.second );
}
}
}
}
int main()
{
GameArenaManager& Manager = GameArenaManager::GetInstance();
PlayerScoreBoardInfo info[5];
info[0] = PlayerScoreBoardInfo("ArchedukeShrimp", 5,4,0,0);
info[1] = PlayerScoreBoardInfo("EvilLactobacilus", 9,4,0,0);
info[2] = PlayerScoreBoardInfo("DolphinetelyOrcaward", 23,4,0,0);
info[3] = PlayerScoreBoardInfo("ChuckSkeet", 1,4,0,0);
info[4] = PlayerScoreBoardInfo("TrumpMcDuck", 87,4,0,0);
for( int i=0; i<5; i++)
Manager.m_Infos.insert( std::make_pair( i, info[i] ) );
std::vector<PlayerScoreBoardInfo> sortedvec;
SortVecFromMap( Manager.m_Infos, sortedvec );
for( std::vector<PlayerScoreBoardInfo>::iterator it = sortedvec.begin(); it != sortedvec.end(); it++ )
{
std::cout << "Name: " << (*it).name.c_str() << " ";
std::cout << "Kills: " << (*it).kill << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxhbGdvcml0aG0+CgpzdHJ1Y3QgUGxheWVyU2NvcmVCb2FyZEluZm8KewogICAgc3RkOjpzdHJpbmcgbmFtZTsKICAgIHVuc2lnbmVkIGludCBraWxsLCBkZWF0aCwgc3VpY2lkZTsKICAgIHVuc2lnbmVkIGludCBzY29yZXN0cmVhazsKICAgIFBsYXllclNjb3JlQm9hcmRJbmZvKCkKICAgIHsKICAgICAgICBraWxsID0gZGVhdGggPSBzdWljaWRlID0gc2NvcmVzdHJlYWsgPSAwOwogICAgICAgIG5hbWUgPSAiIjsKICAgIH0KICAgIGV4cGxpY2l0IFBsYXllclNjb3JlQm9hcmRJbmZvKCBzdGQ6OnN0cmluZyBzdHJuYW1lLCB1bnNpZ25lZCBpbnQgbmtpbGwsIHVuc2lnbmVkIGludCBuZGVhdGgsIHVuc2lnbmVkIGludCBuc3VpY2lkZSwgdW5zaWduZWQgaW50IG5zY29yZXN0cmVhayApIDogCiAgICAgICAgbmFtZShzdHJuYW1lKSwga2lsbChua2lsbCksIGRlYXRoKG5kZWF0aCksIHN1aWNpZGUobnN1aWNpZGUpLCBzY29yZXN0cmVhayhuc2NvcmVzdHJlYWspCiAgICB7CgogICAgfQp9OwoKY2xhc3MgR2FtZUFyZW5hTWFuYWdlcgp7CnByaXZhdGU6CiAgICBHYW1lQXJlbmFNYW5hZ2VyKCkge30KcHVibGljOgogICAgc3RkOjptYXA8dV9sb25nLCBQbGF5ZXJTY29yZUJvYXJkSW5mbz4gbV9JbmZvczsKcHVibGljOgogICAgc3RhdGljIEdhbWVBcmVuYU1hbmFnZXImIEdldEluc3RhbmNlKCkKICAgIHsKICAgICAgICBzdGF0aWMgR2FtZUFyZW5hTWFuYWdlciBJbnN0YW5jZU9iajsKICAgICAgICByZXR1cm4gSW5zdGFuY2VPYmo7CiAgICB9Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPiBpbmxpbmUgdm9pZCBTb3J0VmVjRnJvbU1hcCggc3RkOjptYXA8VDEsVDI+JiBtYXB0b2Rvc29ydCwgc3RkOjp2ZWN0b3I8VDI+JiB2ZWN0b3NvcnQgKQp7CiAgICBzdGQ6OnZlY3RvcjxUMT4gZmVlZHZlY3RvcjsKICAgIGZlZWR2ZWN0b3IucmVzZXJ2ZSggbWFwdG9kb3NvcnQuc2l6ZSgpICk7CgogICAgZm9yKCBjb25zdCBhdXRvJiBpdCA6IG1hcHRvZG9zb3J0ICkKICAgICAgICBmZWVkdmVjdG9yLnB1c2hfYmFjayhpdC5zZWNvbmQua2lsbCk7CiAgICAgICAgCiAgICBzdGQ6OnNvcnQoZmVlZHZlY3Rvci5iZWdpbigpLCBmZWVkdmVjdG9yLmVuZCgpLCBzdGQ6OmdyZWF0ZXI8VDE+KCkpOwoKICAgIGZvcihjb25zdCBhdXRvJiBpdFYgOiBmZWVkdmVjdG9yICkgewogICAgICAgIGZvciggY29uc3QgYXV0byYgaXRNIDogbWFwdG9kb3NvcnQgKSB7IAogICAgICAgICAgICBpZiggaXRNLnNlY29uZC5raWxsID09IGl0ViApICB7CiAgICAgICAgICAgICAgICB2ZWN0b3NvcnQucHVzaF9iYWNrKGl0TS5zZWNvbmQgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBHYW1lQXJlbmFNYW5hZ2VyJiBNYW5hZ2VyID0gR2FtZUFyZW5hTWFuYWdlcjo6R2V0SW5zdGFuY2UoKTsKICAgIFBsYXllclNjb3JlQm9hcmRJbmZvIGluZm9bNV07CiAgICBpbmZvWzBdID0gUGxheWVyU2NvcmVCb2FyZEluZm8oIkFyY2hlZHVrZVNocmltcCIsIDUsNCwwLDApOwogICAgaW5mb1sxXSA9IFBsYXllclNjb3JlQm9hcmRJbmZvKCJFdmlsTGFjdG9iYWNpbHVzIiwgOSw0LDAsMCk7CiAgICBpbmZvWzJdID0gUGxheWVyU2NvcmVCb2FyZEluZm8oIkRvbHBoaW5ldGVseU9yY2F3YXJkIiwgMjMsNCwwLDApOwogICAgaW5mb1szXSA9IFBsYXllclNjb3JlQm9hcmRJbmZvKCJDaHVja1NrZWV0IiwgMSw0LDAsMCk7CiAgICBpbmZvWzRdID0gUGxheWVyU2NvcmVCb2FyZEluZm8oIlRydW1wTWNEdWNrIiwgODcsNCwwLDApOwogICAgZm9yKCBpbnQgaT0wOyBpPDU7IGkrKykKICAgICAgICBNYW5hZ2VyLm1fSW5mb3MuaW5zZXJ0KCBzdGQ6Om1ha2VfcGFpciggaSwgaW5mb1tpXSApICk7IAoKICAgIHN0ZDo6dmVjdG9yPFBsYXllclNjb3JlQm9hcmRJbmZvPiBzb3J0ZWR2ZWM7CiAgICBTb3J0VmVjRnJvbU1hcCggTWFuYWdlci5tX0luZm9zLCBzb3J0ZWR2ZWMgKTsKCiAgICBmb3IoIHN0ZDo6dmVjdG9yPFBsYXllclNjb3JlQm9hcmRJbmZvPjo6aXRlcmF0b3IgaXQgPSBzb3J0ZWR2ZWMuYmVnaW4oKTsgaXQgIT0gc29ydGVkdmVjLmVuZCgpOyBpdCsrICkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgIk5hbWU6ICIgICA8PCAgKCppdCkubmFtZS5jX3N0cigpICA8PCAiICI7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJLaWxsczogIiAgPDwgICgqaXQpLmtpbGwgICAgICAgICAgPDwgc3RkOjplbmRsOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==