补充a-loam的另外两个头文件

第一个是common.h。

#pragma once

//#pragma once:这是一个非标准的预处理指令,用于在包含文件时防止同一个头文件被多次包含。它的作用类似于传统的宏保护,但它不需要在文件末尾添加取消宏定义的指令。这个指令在大多数现代编译器中都得到了支持。

#include <cmath>

#include <pcl/point_types.h>

typedef pcl::PointXYZI PointType;

//struct pcl::PointXYZI;Members: float x, y, z, intensity。

inline double rad2deg(double radians)
{
  return radians * 180.0 / M_PI;
}

inline double deg2rad(double degrees)
{
  return degrees * M_PI / 180.0;
}

//这两个函数是内联函数,用于将弧度转换为角度(rad2deg),以及将角度转换为弧度(deg2rad)。内联函数是一种优化手段,它建议编译器在每次调用函数时直接将函数体插入到调用点,而不是进行函数调用,这样可以减少函数调用的开销。

第二个是tic_toc.h。用于记录代码运行的时间。

#pragma once

#include <ctime>
#include <cstdlib>
#include <chrono>

class TicToc
{
  public:
    TicToc()
    {
        tic();
    }

//当创建 TicToc 类的实例时,会自动调用 tic() 方法。这确保了时间测量从对象创建时就开始。

    void tic()
    {
        start = std::chrono::system_clock::now();//获取当前的系统时间点。
    }

    double toc()
    {
        end = std::chrono::system_clock::now();
        std::chrono::duration<double> elapsed_seconds = end - start;
        return elapsed_seconds.count() * 1000;

//std::chrono::duration<double> 来实现的,它允许以秒为单位表示时间间隔,然后乘以1000将其转换为毫秒。返回值是执行时间的毫秒数。

    }

  private:
    std::chrono::time_point<std::chrono::system_clock> start, end;

//

  • std::chrono::time_point:这是一个模板类,用于表示一个时间点。它需要一个时钟作为模板参数,这里使用的是 std::chrono::system_clock
  • std::chrono::system_clock:这是一个标准的时钟类型,它提供了系统级的绝对时间。它的时间点表示的是自1970年1月1日(即Unix纪元)以来的时间。

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值