使用标准模板库(STL)中的std::queue就可以,不一定要用指针。比如:
#include
struct MyStruct
{
int num;
};
int main()
{
// 定义队列
std::queueq;
MyStruct s1;
s1.num = 1;
// 插入队列
q.push(s1);
// 取出队首元素
MyStruct s1_copy = q.front();
// 队首元素从队列中移除
q.pop();
return 0;
}
队列的特征是先进先出(FIFO),所以push元素会放到队尾,pop元素会取出队头。
除此之外STL还提供了双端队列(deque)。顾名思义,双端队列可以在队列两头进行操作。所以提供了对应的*front和*back的操作。
以下是参考代码:
#include
#include
struct MyStruct
{
int num;
};
int main()
{
// 定义双端队列
std::dequeq;
MyStruct s1;
s1.num = 1;
// 插入队尾
q.push_back(s1);
MyStruct s2;
s2.num = 5;
// 插入队首
q.push_front(s2);
// 取出队首元素
MyStruct s2_copy = q.front();
MyStruct s1_copy = q.back();
std::cout << "s2 = " <std::cout << "s1 = " << s1_copy.num << std::endl;
// 队首元素从队列中移除
q.pop_front();
// 队尾元素从队列中移除
q.pop_back();
// 判断队列是否为空
if (q.empty())
{
std::cout << "Enpty" << std::endl;
}
return 0;
}
std::queue参考:
http://www.cplusplus.com/reference/queue/queue/
std::deque参考:
http://www.cplusplus.com/reference/deque/deque/
struct MyStruct{
// blabla...
}
queue
queue
include
struct point
{
int x;
int y;
};
queue