std::chrono::ceil(std::chrono::duration)
来自cppreference.com
定义于头文件 <chrono>
|
||
template <class ToDuration, class Rep, class Period> constexpr ToDuration ceil(const std::chrono::duration<Rep, Period>& d); |
(C++17 起) | |
返回可表示为 ToDuration
的大于或等于 d
的最小时长 t
。
函数不参与重载决议,除非 ToDuration
是 std::chrono::duration 的特化。
参数
d | - | 要转换的时长 |
返回值
向上取整到 ToDuration
类型时长的 d
。
可能的实现
namespace detail { template<class> inline constexpr bool is_duration_v = false; template<class Rep, class Period> inline constexpr bool is_duration_v< std::chrono::duration<Rep, Period>> = true; } template <class To, class Rep, class Period, class = std::enable_if_t<detail::is_duration_v<To>>> constexpr To ceil(const std::chrono::duration<Rep, Period>& d) { To t = std::chrono::duration_cast<To>(d); if (t < d) return t + To{1}; return t; } |
示例
运行此代码
#include <iostream> #include <chrono> int main() { using namespace std::chrono_literals; using Min = std::chrono::minutes; std::cout << std::showpos << "ceil(+2.4min) = " << std::chrono::ceil<Min>(+2.4min).count() << "min\n" << "ceil(-2.4min) = " << std::chrono::ceil<Min>(-2.4min).count() << "min\n" << "ceil(+0.0min) = " << std::chrono::ceil<Min>(+0.0min).count() << "min\n"; }
输出:
ceil(+2.4min) = +3min ceil(-2.4min) = -2min ceil(+0.0min) = +0min
参阅
(C++11) |
转换时长到另一个拥有不同嘀嗒间隔的时长 (函数模板) |
(C++17) |
以向下取整的方式,将一个时长转换为另一个时长 (函数模板) |
(C++17) |
转换时长到另一个时长,就近取整,偶数优先 (函数模板) |
转换 time_point 到另一个,向上取整 (函数模板) | |
(C++11)(C++11) |
不小于给定值的最接近整数值 (函数) |