я знаю, что могу сделать это
if (timeLeft.count() < 0)
Но мне интересно, как лучше всего, поскольку я также мог бы сделать:
if (timeLeft<std::chrono::seconds(0)) // or milliseconds or nanonseconds...
примечание: я предполагаю, что обе проверки одинаковы, но я не эксперт по хронометрии.
изменить: полный пример:
#include<chrono>
int main(){
const std::chrono::nanoseconds timeLeft(-5);
if(timeLeft<std::chrono::seconds(0)){
return 47;
}
}
edit2: потенциальная проблема с std::chrono::seconds(0)
заключается в том, что начинающий программист может предположить, что это связано с округлением, хотя это не так.
timeLeft
? - person 463035818_is_not_a_number   schedule 05.10.2020nanoseconds
сseconds
, если в этом нет необходимости, поэтомуif (timeLeft.count() < 0)
кажется мне явным победителем. - person underscore_d   schedule 05.10.2020timeLeft<std::chrono::seconds(0)
, потому что будет легче реорганизовать0
, например, в42
. Кстати они одинаковые? не основано на мнении, но в случае, если они одинаковы, спрашивают, что лучше? основано на мнении. Может быть, небольшая перефразировка поможет избежать закрытия вопроса - person 463035818_is_not_a_number   schedule 05.10.2020.count()
, как показано в ответе Адама. И новичок должен скоро понять, что сравнения хронографов всегда точны. Действительно, в хроно все точно, пока вы не увидите явный именованный состав (duration_cast
,time_point_cast
,floor
,ceil
илиround
). - person Howard Hinnant   schedule 05.10.2020