Как сделать сортировку вектора моего класса QVector <DbTrade>?
Вот код:
dbtrade.h:
#ifndef DBTRADE_H
#define DBTRADE_H
class DbTrade
{
public:
DbTrade();
DbTrade(int tradenum, int dateTime, int price, int qty, int buysell, int openInterest);
int getTradenum();
int getDateTime();
int getPrice();
int getQty();
int getBuysell();
int getOpenInterest();
void setTradenum(int tradenum);
void setDateTime(int dateTime);
void setPrice(int price);
void setQty(int qty);
void setBuysell(int buysell);
void setOpenInterest(int openInterest);
private:
int tradenum;
int dateTime;
int price;
int qty;
int buysell;
int openInterest;
};
#endif // DBTRADE_H
#endif // DBTRADE_H
dbtrade.cpp:
#include "dbtrade.h"
DbTrade::DbTrade()
{
tradenum = 0;
dateTime = 0;
price = 0;
qty = 0;
buysell = 0;
openInterest = 0;
}
DbTrade::DbTrade(int tradenum, int dateTime, int price, int qty, int buysell, int openInterest)
{
this->tradenum = tradenum;
this->dateTime = dateTime;
this->price = price;
this->qty = qty;
this->buysell = buysell;
this->openInterest = openInterest;
}
int DbTrade::getTradenum()
{
return tradenum;
}
int DbTrade::getDateTime()
{
return dateTime;
}
int DbTrade::getPrice()
{
return price;
}
int DbTrade::getQty()
{
return qty;
}
int DbTrade::getBuysell()
{
return buysell;
}
int DbTrade::getOpenInterest()
{
return openInterest;
}
void DbTrade::setTradenum(int tradenum)
{
this->tradenum = tradenum;
}
void DbTrade::setDateTime(int dateTime)
{
this->dateTime = dateTime;
}
void DbTrade::setPrice(int price)
{
this->price = price;
}
void DbTrade::setQty(int qty)
{
this->qty = qty;
}
void DbTrade::setBuysell(int buysell)
{
this->buysell = buysell;
}
void DbTrade::setOpenInterest(int openInterest)
{
this->openInterest = openInterest;
}
Далее, я в другом классе инициализирую вектор:
QVector <DbTrade> tradeVector;
и заполоняю его.
Но как его отсортировать по элементу price?
Воспользуйтесь стандартным алгоритмом:
std::sort (myvector.begin(), myvector.end(), [](const DbTrade& lha, const DbTrade& rha){
return lha.getPrice() < rha.getPrice();
});
Только для этого вам понадобится конструктор копирования. Возможно, стоит хранить вектор указателей на DbTrade, чтобы не копировать лишний раз. Или еще лучше: QVector<std::unique_ptr<DbTrade>> - тогда не нужно заботиться об управлении памятью.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости