cartographer_common_block_queue

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

  • push_back() 末尾插入元素
  • push_back() 启始插入元素
  • pop_back() 移除末尾元素
  • pob_front() 移除启始元素
  • front() 访问启始元素
  • back() 访问末尾元素
  • front().get() 启始元素指针

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

猜你喜欢

转载自www.cnblogs.com/heimazaifei/p/12435838.html