fork download
  1. #include <iostream>
  2. #include <array>
  3. #include <vector>
  4. #include <map>
  5. #include <algorithm>
  6.  
  7. struct PlayerScoreBoardInfo
  8. {
  9. std::string name;
  10. unsigned int kill, death, suicide;
  11. unsigned int scorestreak;
  12. PlayerScoreBoardInfo()
  13. {
  14. kill = death = suicide = scorestreak = 0;
  15. name = "";
  16. }
  17. explicit PlayerScoreBoardInfo( std::string strname, unsigned int nkill, unsigned int ndeath, unsigned int nsuicide, unsigned int nscorestreak ) :
  18. name(strname), kill(nkill), death(ndeath), suicide(nsuicide), scorestreak(nscorestreak)
  19. {
  20.  
  21. }
  22. };
  23.  
  24. class GameArenaManager
  25. {
  26. private:
  27. GameArenaManager() {}
  28. public:
  29. std::map<u_long, PlayerScoreBoardInfo> m_Infos;
  30. public:
  31. static GameArenaManager& GetInstance()
  32. {
  33. static GameArenaManager InstanceObj;
  34. return InstanceObj;
  35. }
  36. };
  37.  
  38. template <typename T1, typename T2> inline void SortVecFromMap( std::map<T1,T2>& maptodosort, std::vector<T2>& vectosort )
  39. {
  40. std::vector<T1> feedvector;
  41. feedvector.reserve( maptodosort.size() );
  42.  
  43. for( const auto& it : maptodosort )
  44. feedvector.push_back(it.second.kill);
  45.  
  46. std::sort(feedvector.begin(), feedvector.end(), std::greater<T1>());
  47.  
  48. for(const auto& itV : feedvector ) {
  49. for( const auto& itM : maptodosort ) {
  50. if( itM.second.kill == itV ) {
  51. vectosort.push_back(itM.second );
  52. }
  53. }
  54. }
  55. }
  56.  
  57. int main()
  58. {
  59. GameArenaManager& Manager = GameArenaManager::GetInstance();
  60. PlayerScoreBoardInfo info[5];
  61. info[0] = PlayerScoreBoardInfo("ArchedukeShrimp", 5,4,0,0);
  62. info[1] = PlayerScoreBoardInfo("EvilLactobacilus", 9,4,0,0);
  63. info[2] = PlayerScoreBoardInfo("DolphinetelyOrcaward", 23,4,0,0);
  64. info[3] = PlayerScoreBoardInfo("ChuckSkeet", 1,4,0,0);
  65. info[4] = PlayerScoreBoardInfo("TrumpMcDuck", 87,4,0,0);
  66. for( int i=0; i<5; i++)
  67. Manager.m_Infos.insert( std::make_pair( i, info[i] ) );
  68.  
  69. std::vector<PlayerScoreBoardInfo> sortedvec;
  70. SortVecFromMap( Manager.m_Infos, sortedvec );
  71.  
  72. for( std::vector<PlayerScoreBoardInfo>::iterator it = sortedvec.begin(); it != sortedvec.end(); it++ )
  73. {
  74. std::cout << "Name: " << (*it).name.c_str() << " ";
  75. std::cout << "Kills: " << (*it).kill << std::endl;
  76. }
  77.  
  78. return 0;
  79. }
  80.  
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
Name: TrumpMcDuck Kills: 87
Name: DolphinetelyOrcaward Kills: 23
Name: EvilLactobacilus Kills: 9
Name: ArchedukeShrimp Kills: 5
Name: ChuckSkeet Kills: 1