queue<int> q;
q.front()
:队头元素q.back()
:队尾元素q.empty()
:队列为空时返回 true
,否则返回 false
。q.size()
:返回队列大小(包含的元素数量)q.push(x)
:压入元素 x
q.pop()
:弹出队头元素=
:queue
之间可以互相赋值。==,!=,<,<=,>,>=
:按字典序进行比较queue<int> q;
初始大小为 Byte,可以使用 sizeof(q)
自行输出确认,当你要定义多个队列时一定要注意。(sizeof
函数是编译器计算的)。queue
是一个容器适配器,默认包装的是 deque
。queue
没有 q.begin()
、q.end()
、queue<int>::iterator
这样的东西。deque<int> q;
q.front()
:队头元素q.back()
:队尾元素q.empty()
:队列为空时返回 true
,否则返回 false
。q.size()
:返回队列大小(包含的元素数量)q.push_front()
:从队头压入元素q.pop_front()
:从队头弹出元素q.push_back()
:从队尾压入元素q.pop_back()
:从队尾弹出元素=
:deque
之间可以互相赋值。==,!=,<,<=,>,>=
:按字典序进行比较,从 C++20 开始只有 ==
q.clear()
:好耶,deque
有清空了,但是时间复杂度为 ,所以和非空就 pop
差不多。q[pos]
:访问 pos
位置的元素,时间复杂度是常数,但是由于动态伸缩策略与 vector
不同,所以访问随机位置是比 vector
慢一点的。
与 std::vector 相反, deque 的元素不是相接存储的:典型实现用单独分配的固定大小数组的序列,外加额外的登记,这表示下标访问必须进行二次指针解引用,与之相比 vector 的下标访问只进行一次。
—— CppReference
deque<int> q;
初始大小为 Byte,可以使用 sizeof(q)
自行输出确认,当你要定义多个队列时一定要注意。(sizeof
函数是编译器计算的)。queue
有 q.begin()
、q.end()
、queue<int>::iterator
这样的东西,可以方便地枚举。q.insert(...)、q.earse(...)
:自行探索deque<int>::iterator it = q.begin();
while (it != q.end())
{
cout << (*it) << "\n";
it++;
}
当然语言版本正确后,你也可以
for (auto now : q)
cout << now << "\n";
#include<bits/stdc++.h>
using namespace std;
vector<int> a;
int main()
{
//输入一些数、原样输出
int x;
while(cin>>x)
a.push_back(x);
//方案1
for(int i = 0; i < a.size(); i++)
cout << a[i] << " ";
cout << "\n";
//方案2
for(vector<int>::iterator it = a.begin(); it != a.end(); it++){
cout << (*it) <<" "; // *:取出后面迭代的值
}
cout << "\n";
//方案3
for(auto it = a.begin(); it != a.end(); it++){
cout << (*it) << " "; // *:取出后面迭代的值
}
cout << "\n";
//方案4
for(int x : a)
cout << x << " ";
cout << "\n";
return 0;
}