Необходимо в цикле сравнивать даты, в чем у меня может быть ошибка?
bool operator >=(const Date &d1, const Date &d2)
{
return std::tie(d1.year, d1.month, d1.day, d1.hour, d1.minute) >=
std::tie(d2.year, d2.month, d2.day, d2.hour, d2.minute);
}
Переопределил оператор
struct Date
{
int year;
int month;
int day;
int hour;
int minute;
Date(int y, int m, int d, int h = 10, int mi = 10) : year(y), month(m), day(d),hour(h), minute(mi) {}
};
Структура с датами
for (int i = 0; i < count; i++)
{
if (bars[i].date > end)
break;
if (bars[i].date >= start)
currentBar.push_back(bars[i]);
}
Вот цикл, в котором сравниваю. При отладке значения корректно добавлены, в массиве bars последние элементы 2018 года, а start 2016 года. Но он не заходит по условию. Что может быть не так?
Могу вам предложить такую реализацию. С перегрузкой оператора "меньше". Часы и минуты добавить по тому же принципу.
class Date {
public:
// конструктор выбрасывает исключение, если его аргументы некорректны
Date(int new_year, int new_month, int new_day) {
year = new_year;
if (new_month > 12 || new_month < 1) {
throw logic_error("Month value is invalid: " + to_string(new_month));
}
month = new_month;
if (new_day > 31 || new_day < 1) {
throw logic_error("Day value is invalid: " + to_string(new_day));
}
day = new_day;
}
int GetYear() const {
return year;
}
int GetMonth() const {
return month;
}
int GetDay() const {
return day;
}
private:
int year;
int month;
int day;
};
bool operator<(const Date& lhs, const Date& rhs) {
// воспользуемся тем фактом, что векторы уже можно сравнивать на <:
// создадим вектор из года, месяца и дня для каждой даты и сравним их
return vector<int>{lhs.GetYear(), lhs.GetMonth(), lhs.GetDay()} <
vector<int>{rhs.GetYear(), rhs.GetMonth(), rhs.GetDay()};
}
Как меняется крипторынок и к чему готовиться владельцам криптообменников
Имею простой клиент для высылания сообщений для ActiveMQ на C++ очень похожий на этот пример
Мне нужно создать двусвязный список из нарисованных мною картинокРисую я в компоненте TImage (прямоугольники и эллипсы)