zoukankan      html  css  js  c++  java
  • 简单STL

    string:

    string s="5418340";
    sort(s.begin(),s.end());
    cout<<s;
    
    /**begin是头迭代器,end是尾迭代器*/
    string s="5418340";
    s.erase(s.begin());//删除第一个
    s.erase(--s.end());//删除最后一个
    cout<<s;
    
    
    string s="5418340";
    s=s.substr(1,3);//取418,取索引为1,往后截断3个
    s=s.substr(1,-1);//索引为1,截断到最后
    cout<<s;
    for(auto it=s.begin();it!=s.end();it++) cout<<*it;
    for(auto x:s) cout<<x;
    

    vector

    vector<int> v{1,2,3,4,5};
    cout<<v[1];//取索引为1的
    cout<<v.at(2);//取索引为2的
    v.push_back(5);
    v.resize(10);//不赋值默认为0
    
    v.erase(v.begin());//删除第一个元素
    v.erase(--v.end());//删除最后一个元素
    
    /**获取第一个元素*/
    cout<<v.front();
    cout<<v[0];
    cout<<*v.begin();
    /**获取最后一个元素*/
    cout<<v.back();
    cout<<v[v.size()-1];//size是获取大小
    cout<<*--v.end();
    
    sort(v.begin(),v.end(),less<int>());//从小到大
    sort(v.begin(),v.end(),greater<int>());//从大到小排序
    
    for(auto it=v.begin();it!=v.end();it++) cout<<*it;//迭代器简化循环
    cout<<endl;
    for(auto x:v) cout<<x;//c++11 
    

    stack

    stack<int> s;
    s.push(2);
    s.push(3);
    cout<<s.top()<<endl;
    s.pop();
    cout<<s.top()<<endl;
    cout<<s.size()<<endl;
    

    queue

    队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,
    和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

    queue<int> q;
    
    q.push(5);
    q.push(6);
    cout<<q.front()<<endl;
    q.pop();
    
    cout<<q.front()<<endl;
    cout<<q.size()<<endl;
    

    map

    map<int,int> m;//有序的 
    m[6]=3;
    m[5]=8;
    m[4]=9;
    for(auto it=m.begin();it!=m.end();it++)
    	cout<<it->first<<" "<<it->second<<endl;
    for(auto tmp:m){
    	cout<<tmp.first<<" "<<tmp.second<<endl;
    }
    
    unordered_map<int,int> m;//无序的,哈希结构(底层)
    m[6]=3;
    m[5]=8;
    m[4]=9;
    for(auto it=m.begin();it!=m.end();it++)
    	cout<<it->first<<" "<<it->second<<endl;
    for(auto tmp:m){
    	cout<<tmp.first<<" "<<tmp.second<<endl;
    }
    
    
    /*sort*/
    bool cmp(pair<int,int> a,pair<int,int> b){
        return a.first>b.first;
    }
    int main(){
        unordered_map<int,int> m;//无序的,哈希结构(底层)
        m[6]=3;
        m[5]=8;
        m[4]=9;
        vector<pair<int,int>> v(m.begin(),m.end());
        sort(v.begin(),v.end(),cmp);
        for(auto tmp:v){
            cout<<tmp.first<<tmp.second<<endl;
        }
        return 0;
    }
    

    set

    set<int> s;//树状结构,有序
    unordered_set<int> s2;//哈希结构,无序,快
    s.insert(3);
    s.insert(4);
    s.insert(4);
    s.insert(4);
    cout<<s.size()<<endl;
    for(auto tmp:s)
    	cout<<tmp<<" ";
    cout<<endl;
    for(auto it=s.begin();it!=s.end();it++)
    	cout<<*it<<" ";
    cout<<endl;
    
    

    deque

    ///概念:双端队列
    
    deque<int> d;
    // 4 9 1 2
    d.push_back(1);
    d.push_back(2);
    d.push_front(9);
    d.push_front(4);
    d.pop_back();
    d.pop_front();
    for(auto tmp:d) cout<<tmp<<endl;
    for(auto it=d.begin();it!=d.end();it++) cout<<*it<<endl;
    
    //排序
    sort(d.begin(),d.end(),greater<int>()); 
    
    
    • lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

    • upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

  • 相关阅读:
    【作业】第二周作业, 适合14级1/2班
    【作业】第二周作业,适合13级1/2/3班
    【组织】请13级1/2/3班,14级1/2班 将同学们的博客地址列个清单回复(按班级来)
    【组织】13级1、2、3班和14级1、2班 结对、分组情况请回帖
    【转】没什么能够阻挡,你对自由的向往
    【转】小屁孩, 懂个啥
    【转】远程结对编程实战:看看别人是怎么做的
    【转】看见成长的自己:斯坦福大学心理学教授徳韦克访谈
    【作业】第一周作业
    从std::thread::id取得int值id
  • 原文地址:https://www.cnblogs.com/GUOGaby/p/13986814.html
Copyright © 2011-2022 走看看