私は次の質問を見てきました:オブジェクトのプロパティによるオブジェクトのベクトルの並べ替え
そして、それは私の場合に非常に関連しているようです。少数の Player オブジェクト (6 ~ 10 個) があり、それらはすべて、名前やいくつかの関連統計などの情報を持っています。特定の統計で降順に並べ替えたいと思います。
まだ非常に混乱している
助けてください!
編集:以下の完全に更新されたコード
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
class Player {
public:
Player(string name, int Dex, int Mod, int Lvl, int& diceRoll);
int calcInitiative(int& diceRoll);
int diceRoll;
friend ostream& operator<<(ostream& out, const Player& player) {
return out << player.mName << " " << player.mInitiative;
}
bool operator<(const Player& rhs) const {
if(mInitiative < rhs.mInitiative) return true;
if(mInitiative > rhs.mInitiative) return false;
if(mInitiative == rhs.mInitiative) return false;
}
int mDex, mMod, mLvl, mInitiative;
string mName;
};
Player::Player(string name, int Dex, int Mod, int Lvl, int& diceRoll)
: mName(name), mDex(Dex), mMod(Mod), mLvl(Lvl)
{}
int Player::calcInitiative(int& diceRoll) {
return (mLvl/2) + mDex + mMod + diceRoll;
}
int main() {
int rollD, rollS; // etc.
vector<Player> playerVec;
cout << "Derek rolled: ";
cin >> rollD;
cout << '\n' << "Scott rolled: ";
cin >> rollS;
// etc.
Player Derek("Derek", 2, 0, 6, rollD);
Player B("B", 2, 0, 9, rollB);
// etc...
Derek.mInitiative = Derek.calcInitiative(rollD);
Scott.mInitiative = Scott.calcInitiative(rollS);
//etc.
playerVec.push_back(Derek);
playerVec.push_back(Scott);
// etc.
cout << "The initative order is: " << '\n';
sort (playerVec.begin(), playerVec.end());
for(vector<Player>::iterator it = playerVec.begin(); it != playerVec.end(); ++it) {
cout << *it << endl;
}
system("pause");
return 0;
}