<Standard Template Library>标准模板库专项复习总结(一)
看了看博客园的申请时间也一年多了...想想自己一年多以来一直处于各种划水状态,现在又要面临ACM的冲击...
还是要抓紧时间赶紧复习一下了- -毕竟校园新生赛还是有奖金的..
1.栈
先进后出(LIFO)表
头文件:#include<stack>
变量的定义:stack<TYPE>StackName
成员函数: bool empty() 栈为空返回true,否则返回false void pop() 删除栈顶元素 void push(const TYPE &val) 进栈 size_type size() 返回栈的数目 TYPE& top() 查看栈首
2.动态数组
头文件:#include<vector>
变量的定义:vector<TYPE>vectorName
成员函数: TYPE& size() 返回数组的数目 bool empty() 数组为空返回true,否则返回false void clear() 清空数组 * begin() 返回第一个数据的地址 * end() 返回最后一个数据的地址 void pop_back() 删除最后一个数据 * insert(a,b) 在a位置插入b void insert(a,n,b) 在a位置插入n个b void insert(a,beg,end) 在a位置插入beg到end之间的数据 void swep(vector) 互换两个vector
3.映射
头文件:#include<map>
变量的定义:map<TYPE,TYPE>mapName
map<key,elem> 一个map,以less<>为排序准则 map<key,elem,op> 一个map,以op为排序准则
另外需要定义迭代器(iterator)
map<string,float>::iterator pos;
类似于指针,解释一下就是:
当迭代器pos指向map中的某个元素,表达式pos->first获得该元素的key,表达式pos->second获得该元素的value
举个例子:(摘自https://blog.csdn.net/shawn_hou/article/details/38035577)
#include <map> #include <string> #include <iostream> using namespace std; int main() { map<int, string> mapStudent; mapStudent.insert(pair<int, string>(1, "student_one")); mapStudent.insert(pair<int, string>(2, "student_two")); mapStudent.insert(pair<int, string>(3, "student_three")); map<int, string>::iterator iter; for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++) cout<<iter->first<<' '<<iter->second<<endl; }
成员函数: iterator begin() 返回指向第一个元素的迭代器 iterator end() 返回指向最后一个元素的迭代器 void clear() 清空map bool empty() 返回是否map为空 void insert() 插入 TYPE& size() 返回map大小
*也可以直接使用pair类型输入
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<map> 5 #include<vector> 6 #include<queue> 7 #define MAXN 8 using namespace std; 9 int n,x,y; 10 int main(){ 11 ios::sync_with_stdio(false); 12 map<int,int>m; 13 m.insert(pair<int,int>(1,2)); 14 cin>>n; 15 for(register int i=1;i<=n;i++){ 16 cin>>x>>y; 17 pair<int,int> p (x,y); 18 m.insert(p); 19 } cout<<endl; 20 for(register map<int,int>::iterator i=m.begin();i!=m.end();i++){ 21 pair<int,int>it=*i; 22 cout<<it.first<<" "<<it.second<<endl; 23 } 24 return 0; 25 } 26 原文:https://blog.csdn.net/NOIAu/article/details/72923307
------对于没有数据结构基础的小白,比如不知道什么是迭代器什么是pair可以自行百度
总而言之,map=pair+set
#include<cstdio> #include<iostream> #include<map> using namespace std; int main(){ map<string,float> c; c.insert(make_pair("Cafe",7.75)); c.insert(make_pair("Banana",1.72)); c["Wine"]=15.66; map<string,float>::iterator pos; for(pos=c.begin();pos!=c.end();pos++){ cout<<pos->first<<" "<<pos->second<<endl; } return 0; }