<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; 
} 

 

posted @ 2018-11-05 19:11  Fylsea  阅读(311)  评论(0编辑  收藏  举报