5.1 stack,queue以及priority_queue
*:stack
使用要包含头文件stack,栈是一种先进后出的元素序列,删除和访问只能对栈顶的元素(最后一个添加的元素)进行,并且添加元素只能添加到栈顶。栈内的元素不能访问,要想访问先要删除其上方的所有元素,使之变成栈顶元素才可以。
1)定义
template<class T,class Cout=deque<T>>
class stark{
.......
};
第二个参数表明,在默认情况下,stack都是用deque来实现的。也可以用指定的vector和list来实现。但不拥有顺序容器的成员函数。
2)成员函数
除了所有容器都有的成员函数size和empty外,还有push,top,pop三个成员函数。
3)例
//program 19.5.1.1.cpp stack用于转换十进制数到k进制数 #include <iostream> #include <stack> //使用stack需要包含此头文件 using namespace std; int main() { int n,k; stack<int> stk; cin >> n >> k; //将n转换为k进制数 if( n == 0) { cout << 0; return 0; } while( n ) { stk.push( n % k); n /= k; } while( ! stk.empty ()) { cout << stk.top(); stk.pop(); } return 0; }
**:queue
使用必须包含queue头文件。队列queue是先进先出。删除和访问只能发生在队尾,添加动作只能在队尾进行。
1)定义
template<class T,class Cout=deque<T>>
class queue{
.........
};
2)成员函数
和stack类似,差别在于push发生在队尾,pop发生在队头。
***:priority_queue
1)定义
2)例
//program 19.5.2.1.cpp priority_queue用法示例 #include <queue> #include <iostream> using namespace std; int main() { priority_queue<double> pq1; pq1.push(3.2); pq1.push(9.8); pq1.push(9.8); pq1.push(5.4); while( !pq1.empty() ) { cout << pq1.top() << " "; pq1.pop(); } //上面输出 9.8 9.8 5.4 3.2 cout << endl; priority_queue<double,vector<double>,greater<double> > pq2; pq2.push(3.2); pq2.push(9.8); pq2.push(9.8); pq2.push(5.4); while( !pq2.empty() ) { cout << pq2.top() << " "; pq2.pop(); } //上面输出 3.2 5.4 9.8 9.8 return 0; }
本博客作为一个入门者的自学记录,欢迎各位同行者不吝赐教。