QT中 C++ STL 模板类queue的使用

个人的应用背景:两个线程之间需要数据传输,单向数据发送,一个线程从底层接口拿数据,另一线程需要那到这个数据进行解析应用,之前使用方法很简单直接直接设置使用一个全局变量,使用上进行了互斥的处理,后续出现了数据解析的线程出现数据处理不及时出现丢帧的情况,所以使用队列数据结构,一般在单片机嵌入式应用时可以自己写一个简单的队列,这个我以前也做过,由于QT支持C++ 的STL,所以直接使用STL中的queue的数据结构,下面介绍使用方法:

1、需要包含头文件

#include   /* 不可以使用queue.h */

2、指明使用的命名空间 不然无法使用

using namespace std;

3、 示例代码

定义queue 对象的应用代码如下:


queue  _Rev_Queue; /* 定义数据 数据尾部添加数据 */

/*  入队操作 */


CAN_J1939_MESSAGE_Rev_Queue.push(this->Charger_data); 

/*  出队操作 */


if(!CAN_J1939_MESSAGE_Rev_Queue.empty())   /* 判断数据是否为空 */


{

J1939CAN_buf_data = CAN_J1939_MESSAGE_Rev_Queue.front();/* 从数据头 提取数据 */

CAN_J1939_MESSAGE_Rev_Queue.pop();                                 /*  数据头的数据弹出  */

}

上面是我使用到的几个方法 ,可能在加一个 size()方法获取数据个数就可以了,

4、总结

不知道是出于什么考虑出队的pop方法竟然不能直接获取到数据,明显增加了一个操作。

另外还有一个方法是获取队列的最后进入的元素 back();

你可能感兴趣的:(QT中 C++ STL 模板类queue的使用)