zoukankan      html  css  js  c++  java
  • STL初步

    1、stack
    stack 模板类的定义在<stack>头文件中。
    stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要
    的,在不指定容器类型时,默认的容器类型为deque。
    定义stack 对象的示例代码如下:
    stack<int> s1;
    stack<string> s2;
    stack 的基本操作有:
    入栈,如例:s.push(x);
    出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素。
    访问栈顶,如例:s.top()
    判断栈空,如例:s.empty(),当栈空时,返回true。
    访问栈中的元素个数,如例:s.size()。

     1 #include<cstdio>
     2 #include<stack>
     3 #include<iostream>
     4 using namespace std;
     5 int main()
     6 {
     7     queue<int> s1;
     8     int i;
     9     for(i=0;i<10;i++)
    10         s1.push(i);
    11     cout<<s1.size()<<endl;
    12     for(i=0;i<10;i++)
    13     {
    14         cout<<s1.top()<<" ";
    15         s1.pop();
    16     }
    17     cout<<endl<<s1.size()<<" "<<s1.empty();
    18     return 0;
    19 }

    2、queue
    queue 模板类的定义在<queue>头文件中。
    与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类
    型,元素类型是必要的,容器类型是可选的,默认为deque 类型。
    定义queue 对象的示例代码如下:
    queue<int> q1;
    queue<double> q2;

    queue 的基本操作有:
    入队,如例:q.push(x); 将x 接到队列的末端。
    出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
    访问队首元素,如例:q.front(),即最早被压入队列的元素。
    访问队尾元素,如例:q.back(),即最后被压入队列的元素。
    判断队列空,如例:q.empty(),当队列空时,返回true。
    访问队列中的元素个数,如例:q.size()

     1 #include<queue>
     2 #include<iostream>
     3 using namespace std;
     4 int main()
     5 {
     6     queue<int> q;
     7     int i;
     8     for(i=0;i<10;i++)
     9         q.push(i);
    10     cout<<q.front()<<endl;
    11     cout<<q.back()<<endl;
    12     cout<<q.size()<<endl;
    13     for(i=0;i<2;i++)
    14         q.pop();
    15     cout<<q.size()<<endl;
    16 }

    3、priority_queue
    在<queue>头文件中,还定义了另一个非常有用的模板类priority_queue(优先队列)。优先队
    列与队列的差别在于优先队列不是按照入队的顺序出队,而是按照队列中元素的优先权顺序
    出队(默认为大者优先,也可以通过指定算子来指定自己的优先顺序)。
    priority_queue 模板类有三个模板参数,第一个是元素类型,第二个容器类型,第三个是比
    较算子。其中后两个都可以省略,默认容器为vector,默认算子为less,即小的往前排,大
    的往后排(出队时序列尾的元素出队)。
    定义priority_queue 对象的示例代码如下:
    priority_queue<int> q1;
    priority_queue< pair<int, int> > q2; // 注意在两个尖括号之间一定要留空格。
    priority_queue<int, vector<int>, greater<int> > q3; // 定义小的先出队
    priority_queue 的基本操作与queue 相同。pop(),push()用于出队入队,top()用于返回出队元素;

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<queue>
     4 using namespace std;
     5 int main()
     6 {
     7    8     priority_queue<int,vector<int>,greater<int> > q1;
     9     int i;
    10     for(i=0;i<5;i++)
    11         q1.push(i);
    12     for(i=0;i<5;i++)
    13     {
    14         cout<<q1.top()<<" ";
    15         q1.pop();
    16     }
    17     return 0;
    18 }
  • 相关阅读:
    C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置
    C语言十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方
    pycharm的注册码,所有版本
    无法链接glew的解决办法-编译开源库出现: error LNK2001: 无法解析的外部符号
    删除文件是遇到“拒绝访问”的解决方法
    基类的析构函数写成virtual虚析构函数
    C++语言定义的标准转换
    VC中C++数值范围的确定
    SCI投稿过程总结、投稿状态解析、拒稿后对策及接受后期相关问答
    STL其他--<tuple>用法【C11】
  • 原文地址:https://www.cnblogs.com/a1225234/p/4536571.html
Copyright © 2011-2022 走看看