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     priority_queue<int> q1;
 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 }
时间: 2024-10-05 05:02:00

STL初步的相关文章

UVA 10474:Where is the Marble?(STL初步)

 Where is the Marble?  Raju and Meena love to play with Marbles. They have got a lot of marbles with numbers written on them. At the beginning, Raju would place the marbles one after another in ascending order of the numbers written on them. Then Mee

(STL初步)不定长数组:vector

STL是指C++的标准模板库.(存储着一些常用的算法和容器) vector是一个不定长数组.它把一些常用的操作"封装"在vector类型内部. 例如,a是一个vector.1对元素的操作有,可以用a.size()读取它的大小,a.resize()改变它的大小,a.push_back()向尾部添加元素,a.pop_back()删除最后一个元素.2对数组的操作有:a.clear()清空,a.empty()测试是否为空. vectors是一个模板类. 它的使用声明:vetor<int&

【STL初步】不定长数组:vector + 集合:set + 映射:map

一.vector 为了节省空间,有时我们会使用动态数组vector. 定义动态数组 vector<类型名>变量名 vector<int>que //定义que为一个int类型的动态数组 vector<char> a //定义 a 为一个char 类型的动态数组 vector<data> c //其中data为自定义的数据类型,可以为结构体  指令 a[i] ---- 返回动态数组中的第i个元素a.empty() ---  若动态数组为空,则返回true,否则

初涉算法——STL初步

一.头文件<algorithm> ①sort函数 sort使用数组元素默认的大小比较运算符进行排序,只有在需要按照特殊依据进行排序时才需要传入额外的比较函数: sort可以给任意对象排序(不一定是内置类型,由此可见sort是模板函数),前提是类型需要定义"小于"运算符,或者在排序时传入一个"小于"函数: 排序对象若存在普通数组中,则用sort(a, a+n)的方式调用: 排序对象若存在vector中,则用sort(v.begin(), v.end()).

(STL初步)映射:map

map就是从键(key)到值(value)的映射. 因为重载了[]运算符,map像是数组的"高级版". 例如,map<string,int>month_name 表示:"月份名字到月份编号"的映射. 赋值方式: month_name["July"]=7:(类似于 month_name["string"]=int ) 例题5-4 Problem Most crossword puzzle fans are used

算法竞赛入门经典5.2 STL初步

1. 排序和检索,学会使用sort排序,以及low_bound函数 Raju and Meena love to play with Marbles. They have got a lot of marbles with numbers written on them. At the beginning, Raju would place the marbles one after another in ascending order of the numbers written on the

AcWing STL初步学习

vector, 变长数组,倍增的思想 size() 返回元素个数 empty() 返回是否为空 clear() 清空 front()/back() push_back()/pop_back() begin()/end() [] 支持比较运算,按字典序 pair<int, int> first, 第一个元素 second, 第二个元素 支持比较运算,以first为第一关键字,以second为第二关键字(字典序) string,字符串 size()/length() 返回字符串长度 empty()

《算法竞赛入门经典(第二版)》pdf

下载地址:网盘下载 内容简介  · · · · · · <算法竞赛入门经典(第2版)>是一本算法竞赛的入门与提高教材,把C/C++语言.算法和解题有机地结合在一起,淡化理论,注重学习方法和实践技巧.全书内容分为12 章,包括程序设计入门.循环结构程序设计.数组和字符串.函数和递归.C++与STL入门.数据结构基础.暴力求解法.高效算法设计.动态规划初步.数学概念与方法.图论模型与算法.高级专题等内容,覆盖了算法竞赛入门和提高所需的主要知识点,并含有大量例题和习题.书中的代码规范.简洁.易懂,不

单词数(hdu2072)

这道题用到了(STL初步)集合:Set 的知识点.同时,也用到了stringstream 的知识点,还用到了getline(cin,line)的知识点. #include<iostream> #include<cstring> #include<sstream> #include<set> using namespace std; int main() { string s, line; while (getline(cin, line) &&