q.push(cur);什么意思(在c++里),是将整个结构体推入fifo队列吗
2个回答
2016-07-15 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
#include <queue>
struct MyStruct
{
int num;
};
int main()
{
// 定义队列
std::queue<MyStruct> q;
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 <queue>
#include <iostream>
struct MyStruct
{
int num;
};
int main()
{
// 定义双端队列
std::deque<MyStruct> q;
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 = " <<s2_copy.num << std::endl;
std::cout << "s1 = " << s1_copy.num << std::endl;
// 队首元素从队列中移除
q.pop_front();
// 队尾元素从队列中移除
q.pop_back();
// 判断队列是否为空
if (q.empty())
{
std::cout << "Enpty" << std::endl;
}
return 0;
}
struct MyStruct
{
int num;
};
int main()
{
// 定义队列
std::queue<MyStruct> q;
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 <queue>
#include <iostream>
struct MyStruct
{
int num;
};
int main()
{
// 定义双端队列
std::deque<MyStruct> q;
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 = " <<s2_copy.num << std::endl;
std::cout << "s1 = " << s1_copy.num << std::endl;
// 队首元素从队列中移除
q.pop_front();
// 队尾元素从队列中移除
q.pop_back();
// 判断队列是否为空
if (q.empty())
{
std::cout << "Enpty" << std::endl;
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询