zoukankan      html  css  js  c++  java
  • <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; 
    } 
  • 相关阅读:
    Ubuntu MP4转MP3 软件:soundconverter
    Jupyter 中添加conda环境
    Pandas 比较两个 DataFrames 是否相同
    苹果ID不能登陆:The action could not be completed. Try again
    awsome node.js
    Cygwin
    library dep
    process
    MSCV version
    cmake_host_system_information
  • 原文地址:https://www.cnblogs.com/Fylsea/p/9910872.html
Copyright © 2011-2022 走看看