Сортировка двух разных векторов объекта класса вместе - PullRequest
0 голосов
/ 08 мая 2020

Допустим, у меня есть такой код

#include <iostream>
#include <vector>
using namespace std;
class player{
protected:
    int agility;
    int strength;
    int accuracy;
    string teamcolour;
public:
    void shoot(){};

};
class playerA:public player{
public:
playerA(int a,int s,int ac){
    agility=a;
    strength=s;
    accuracy=ac;
    teamcolour="Blue";
  }
};
class playerB:public player{
public:
playerB(int a,int s,int ac){
    agility=a;
    strength=s;
    accuracy=ac;
    teamcolour="Red";
  }
};
int main() {
    vector<playerA>teamA{playerA(10,40,15),playerA(25,30,25),playerA(20,15,33)};
    vector<playerB>teamB{playerB(35,22,40),playerB(18,34,26),playerB(45,19,32)};
    return 0;
}

Я хочу, чтобы каждый игрок использовал функцию Shot (), начиная с игрока, который имеет наибольшую ловкость, и продолжал со следующим по agile игроком. Я не мог найти способ отсортировать эти разные векторы вместе, и я не хочу создавать один вектор со всеми игроками в нем. Я хочу создать два отдельных вектора, представляющих две команды.

1 Ответ

0 голосов
/ 08 мая 2020

Определите эту функцию сравнения вне main:

bool compare(player a, player b){ return a.agility > b.agility; }

и вызовите sort:

std::sort (teamA.begin(), teamA.end(), compare); std::sort (teamB.begin(), teamB.end(), compare);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...