让自己习惯C++
1. 视C++为一个语言联邦
C++是从四个次语言组成的联邦政府,每个次语言都有自己的规则。
- C:C++的基础
- Object-Oriented C++:面向对象设计,类/封装/继承/多态/virtual函数等
- Template C++:范型编程/模版元编程
- STL:容器/迭代器/算法/函数对象
以从 organized 的点云提取 RGB 信息为例
基于Mat对象的随机像素访问 API 实现,通过行列索引方式遍历每个像素值。这种方法速度较慢,不太适合用于像素遍历。
1 | void extract_1(const pcl::PointCloud<PointT>::Ptr cloud, cv::Mat &image) |
类的构造函数是类的一种特殊的成员函数,用于创建类的新对象和初始化自定义类成员。
void
。inline
, explicit
, friend
或 constexpr
const
, volatile
或者const volatile
的对象,该对象在构造完成后变为 const
public
且 inline
的。
push_back()
向容器尾部添加元素时,首先会创建这个元素,然后再将这个元素拷贝或者移动到容器中(如果是拷贝的话,事后会自行销毁先前创建的这个元素)。而
emplace_back()
在实现时,则是直接在容器尾部创建这个元素,省去了拷贝或移动元素的过程。
事实上,大多数情况下二者没有区别,只有在少数情况下 emplace_back()
效率更高。主要是 emplace_back()
支持 in-place construction
。
std::future
是C++11 的一个模板类,提供了一种用于访问异步操作结果的机制。可以用来获取异步任务的结果,因此可以把它当成一种简单的线程间同步的手段。
设想这样的情况,你希望一个线程进行工作A,同时你在做一些其他的工作,你希望在某个特定的时间获取那个工作A的结果。在c++11,这个可以轻松被 std::future
实现。而由于它是一个模板类,可以返回任何类型的结果。
std::condition_variable
是 C++11 多线程编程中的条件变量。
一般用法: 线程 A 等待某个条件并挂起,直到线程 B 设置了这个条件,并通知条件变量,然后线程 A 被唤醒。