C++11常用知识

顶层const:指针本身是一个常量;
底层const:指针指向的对象是一个常量;

nullptr 常量: 空指针,与0等价,增加了可读性
constexpr 变量:申明一个常量表达式

类型别名声明:
typedef double dnum; 等价于 using dnum2 = double;
typedef char pstring; 等价于 using pstring2 = char;

auto 类型指示符:auto让编译器通过初始值来推算变量的类型,所以,其定义的变量必须要有初始值;

decltype 类型指示符:选择并返回操作数的数据类型

std::thread 支持了并发编程,在不同平台上不再依赖于系统底层的 API,实现了语言层面的跨平台支持
std::regex提供了完整的正则表达式支持等等

std::shared_ptr 是一种智能指针,它能够记录多少个 shared_ptr 共同指向一个对象,从而消除显示的调用 delete,当引用计数变为零的时候就会将对象自动删除。

但还不够,因为使用 std::shared_ptr 仍然需要使用 new 来调用,这使得代码出现了某种程度上的不对称。

std::make_shared 就能够用来消除显示的使用 new,所以std::make_shared 会分配创建传入参数中的对象,并返回这个对象类型的std::shared_ptr指针。

std::shared_ptr 可以通过 get() 方法来获取原始指针,通过 reset() 来减少一个引用计数,并通过get_count()来查看一个对象的引用计数。

std::unique_ptr 是一种独占的智能指针,它禁止其他智能指针与其共享同一个对象,从而保证代码的安全:

std::weak_ptr是一种弱引用(相比较而言 std::shared_ptr 就是一种强引用)。弱引用不会引起引用计数增加

std::weak_ptr 没有 * 运算符和 -> 运算符,所以不能够对资源进行操作,它的唯一作用就是用于检查 std::shared_ptr 是否存在,其 expired() 方法能在资源未被释放时,会返回 true,否则返回 false。

体素滤波器,对每一个体素voxel,采用第一个point代替所有的points
VoxelFilter: Voxel filter for point clouds

一个轨迹线:多个传感器
Collator:采集者,校对者,整理者,将多传感器采集的数据归并到轨迹上。

右手笛卡尔坐标系绕x,y和z轴的旋转分别叫做roll(翻滚角), pitch(俯仰角) 和 yaw(偏航角) 旋转。
google采用的就是右手:roll, pitch, yaw.

绕x轴:θx 是 roll 角,和右手螺旋的方向相反(在yz平面顺时针)
绕y轴:θy 是 pitch 角,和右手螺旋的方向相反(在zx平面顺时针)。
绕z轴:θz 是yaw 角,和右手螺旋的方向相反(在xy平面顺时针)。

reinterpret_cast的转换格式:reinterpret_cast (expression) 允许将任何指针类型转换为指定的指针类型
reinterpret_cast<const char*>(uncompressed.data())

All coordinates are expressed in the right-handed Cartesian coordinate system
used by Cartographer (x forward, y left, z up). Message names are chosen to
mirror those used in the Eigen library.

std::min_element
std::max_element
std::accumulate
std::unique_ptr
std::forward
std::unique_lock
std::condition_variable
std::forward_as_tuple
std::bitset
std::unordered_set
std::forward_as_tuple

std::unordered_map内部元素是无序的,而std::map中的元素是按照二叉搜索树存储,进行中序遍历会得到有序遍历。
std::map中的元素默认按key值升序排序。一个map是一个键值对序列,即(key, value)对。它提供基于key的快速检索能力,在一个map中key值是唯一的

emplace操作是C++11新特性,新引入的的三个成员emlace_front、empace 和 emplace_back,这些操作构造而不是拷贝元素到容器中,这些操作分别对应push_front、insert 和push_back,允许我们将元素放在容器头部、一个指定的位置和容器尾部。
两者的区别
当调用insert时,我们将元素类型的对象传递给insert,元素的对象被拷贝到容器中,而当我们使用emplace时,我们将参数传递元素类型的构造函,emplace使用这些参数在容器管理的内存空间中直接构造元素。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值