用于 chrono 东西的内置 typedefs?

Built-in typedefs for chrono stuff?

提问人:Jason C 提问时间:6/26/2022 最后编辑:Jason C 更新时间:6/26/2022 访问量:107

问:

C++ (>= 14) 是否为时钟类型提供任何内置的便利 typedefs?time_point

完全限定名称很长,有时我不能只使用(例如,如果我需要使用 chrono 类型作为模板参数)。已经有简单的方法可以缩短它们,例如:auto

#include <chrono>
#include <vector>

using std::vector;

int main () {

    {
        // fully qualified names are intense:
        vector<std::chrono::time_point<std::chrono::steady_clock>> times;
        times.push_back(std::chrono::steady_clock::now());
    }

    {
        // but this is straightforward:
        using namespace std::chrono;
        vector<time_point<steady_clock>> times;
        times.push_back(steady_clock::now());
    }

    {
        // so is this, which is basically what i currently do:
        using clock = std::chrono::steady_clock;
        using time = std::chrono::time_point<clock>;
        vector<time> times;
        times.push_back(clock::now());        
    }

}

因此,我已经有了一个缩短我使用的名称的解决方案;我只是想知道 std 库中是否已经定义了一些 typedef,或者我是否应该继续像上面一样自己定义它们。主要是好奇。

PS 另一个昏昏欲睡的是:

auto usecs = std::chrono::duration_cast<std::chrono::microseconds>(endtime - starttime).count();
C++ 14 标准 C++-Chrono

评论

2赞 fabian 6/26/2022
您可以使用 将最后一个选项缩短为 littbe 位。(适用于任何时钟)我很确定除了 or 之外没有办法缩短;标准库似乎强调使事情变得明确。using time = clock::time_point;std::chrono::steady_clockusing namespace ...;namespace identifier = ...;
0赞 Jason C 6/26/2022
@fabian 哦,太酷了;嘿,我会拿走我能得到的,谢谢!
1赞 Pepijn Kramer 6/26/2022
是的,我当然同意你的看法,std::chrono 有点冗长。是的,“使用谢谢,我不是想用任何帐户来刻薄:)是的,使用也输入了我的代码几次:)我做的另一件事是编写包装类,对我想做的事情进行建模,并将时间数据类型保留在内部。使用 C++20,至少您可以创建一些概念来使模板的代码更简洁。还有一种可能性,我也不太明白你的问题:)my_clock_t = std::chrono::steady_clock
1赞 Pepijn Kramer 6/26/2022
@JasonC 像这样的抽象很好,因为它们确实改善了语义。我想说的是,不要为了缩写而缩写:)所以我在这里没有争论。
1赞 Howard Hinnant 6/26/2022
@fabian的回答也是我要说的。此外,迁移到 C++20 时,还会引入一些其他便利类型别名。例如,根据各种精度获得 s。我自己经常使用本地使用指令。time_pointsystem_clock

答: 暂无答案