首页 > 解决方案 > 按特定成员 C++ 对向量进行排序

问题描述

是否可以按类vector的特定成员对 a 进行排序?

我有一堂课叫Car

class Carro {
private:
    int positionX;  
    int place;  

public:
    Carro(string marca, float energiaInicial, float energiaMaxima, int velocMax, string model = "modelo base");
    ~Carro();

    void setPosition(int posX);
    void setPlace(int place);

    int getPositionX() const;
    int getPlace() const;};

以及汽车的向量:vector<Car*> raceTrack;

我想要做的是根据汽车的位置对这个向量进行排序。如果 A 车领先于 B 车,则 A 获得第一名,B 获得第二名,以此类推。

PS想象一下所有的汽车都已经定义了一个地方(例如:汽车A有1个,汽车B有2个,汽车C有3个......)

标签: c++classsorting

解决方案


以下应该有效(未经测试):

std::sort(raceTrack.begin(), raceTrack.end(), [](const Carro* a, const Carro* b) {
    return a->getPlace() < b->getPlace();   
});

推荐阅读