目录
一、成员函数
一、构造函数
二、入栈 push
三、出栈 pop
四、判空 empty
五、队列大小 size
六、取队头元素 front
七、取队尾元素 back
八、入栈 emplace
九、交换函数 swap
二、非成员函数重载
一、关系运算符重载
二、交换函数 swap
C++中的queue不再是容器,而是容器适配器
注意:queue不再支持迭代器,因为需要保证先进先出
一、成员函数
一、构造函数
1.默认构造
explicit queue (const container_type& ctnr = container_type())
queue<int> q;
二、入栈 push
void push (const value_type& val)
queue<int> q;
q.push(1); q.push(2); q.push(3);
三、出栈 pop
void pop ()
四、判空 empty
bool empty () const
queue<int> q;
for (int i = 0; i < 10; ++i) q.push(i);
while (!q.empty()) q.pop();
五、队列大小 size
size_type size() const
queue<int> q;
for (int i = 0; i < 10; ++i) q.push(i);
cout << q.size() << endl;
六、取队头元素 front
value_type& front ()
const value_type& front () const
queue<int> q;
for (int i = 0; i < 10; ++i) q.push(i);
cout << q.front() << endl;//0
七、取队尾元素 back
value_type& back ()
const value_type& back () const
queue<int> q;
for (int i = 0; i < 10; ++i) q.push(i);
cout << q.back() << endl;//9
八、入栈 emplace
emplace和push功能一样,但是当栈的对象为自定义类型时,emplace可以直接传入对象构造参数,无需构造对象再传入。
queue<pair<int, char>> q;
pair<int, char> p(10, 'a');
q.push(p);
q.emplace(20, 'b');
九、交换函数 swap
template <class... Args>
void emplace (Args&&... args)
queue<int> q1;
q1.push(1); q1.push(2); q1.push(3);
queue<int> q2;
q2.push(4); q2.push(5);
cout << "交换前:q1.size: " << q1.size() << " q1.size: " << q2.size() << endl;
q1.swap(q2);
cout << "交换后:q1.size: " << q1.size() << " q1.size: " << q2.size() << endl;
//交换前:q1.size: 3 q1.size : 2
//交换后:q1.size : 2 q1.size : 3
二、非成员函数重载
一、关系运算符重载
(1) | template <class T, class Container>bool operator== (const queue<T,Container>& lhs, const queue<T,Container>& rhs); |
---|---|
(2) | template <class T, class Container>bool operator!= (const queue<T,Container>& lhs, const queue<T,Container>& rhs); |
(3) | template <class T, class Container>bool operator< (const queue<T,Container>& lhs, const queue<T,Container>& rhs); |
(4) | template <class T, class Container>bool operator<= (const queue<T,Container>& lhs, const queue<T,Container>& rhs); |
(5) | template <class T, class Container>bool operator> (const queue<T,Container>& lhs, const queue<T,Container>& rhs); |
(6) | template <class T, class Container>bool operator>= (const queue<T,Container>& lhs, const queue<T,Container>& rhs); |
二、交换函数 swap
template <class T, class Container>
void swap (queue<T,Container>& x, queue<T,Container>& y) noexcept
queue<int> q1;
q1.push(1); q1.push(2); q1.push(3);
queue<int> q2;
q2.push(4); q2.push(5);
cout << "交换前:q1.size: " << q1.size() << " q1.size: " << q2.size() << endl;
swap(q1, q2);
cout << "交换后:q1.size: " << q1.size() << " q1.size: " << q2.size() << endl;
//交换前:q1.size: 3 q1.size : 2
//交换后:q1.size : 2 q1.size : 3