class BlockingQueue 是线程安全的阻塞队列,(生产者消费者模式)
函数:
构造函数初始化队列大小,kInfiniteQueueSize=0默认不限制容量。queue_size限制容量:通过条件变量做到.
不可拷贝不可赋值
Push() :添加元素,容量不够时,阻塞等待
Pop() :删除元素,没有元素时,阻塞等待
Peek() :返回下一个应该弹出的元素
PushWithTimeout() :添加元素, 若超时则返回false
PopWithTimeout() :删除元素,若超时则返回false
参数:
carto 代码引用说明:
BlockingQueue —> OrderedMultiQueue( 用来存储传感器信息 )
小贴士:
1.const 和 constexpr
const 所定义的变量,一经初始化便不能修改,但是不要求const所定义变量在编译的时候就能被算出。
constexpr 定义的变量要求,变量在程序被编译的时候就能被判定为常量,否则出错。
总结来说,constexpr 定义的变量“常量的属性” 比const 所定义的变量更彻底(这是我自己的语言)
2.std::deque
( double-ended queue ,双端队列)是有下标顺序容器,它允许在其首尾两段快速插入及删除。另外,在 deque 任一端插入或删除不会非法化指向其余元素的指针或引用。
https://zh.cppreference.com/w/cpp/container/deque
3.size_t 和int 区别:
size_t是一些C/C++标准在stddef.h中定义的。这个类型足以用来表示对象的大小。size_t的真实类型与操作系统有关。
在32位架构中被普遍定义为:
typedef unsigned int size_t;
而在64位架构中被定义为:
typedef unsigned long size_t;
在表示大小的时候,,往往用 size_t ,不用int
cartographer_common_block_queue
原文:https://www.cnblogs.com/heimazaifei/p/12435838.html