• stl


    vector

    #include<stdio.h>
    #include<iostream>
    #include<string.h>
    #include<queue>
    #include<stack>
    #include<list>
    #include<stdlib.h>
    #include<algorithm>
    #include<vector>
    #include<map>
    #include<set>
    using namespace std;
    int cmp(const int a,const int b)
    {
        return a>b;
    }
    int main()
    {
        vector<int>q ,q1;
        int n;
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            int t;scanf("%d",&t);
            q.push_back(t);   //  push_back;
            q1.insert(q1.begin()+i,t); // 插入位置  和数组一样 从 0  开始 。
        }
        for(int i=0;i<n;i++)
            printf("%d ",q1[i]);
        puts("");
        for(int i=0;i<n;i++)
            printf("%d ",q[i]);
        printf("
    ");
        for(vector<int> ::iterator it=q.begin();it!=q.end();it++)
            printf("%d ",*it); //迭代器的使用
        puts("");
        reverse(q.begin(),q.end());  //反向输出
        for(vector<int> :: iterator it=q.begin();it!=q.end();it++){
            printf("%d ",*it);
        }
        puts("");
        sort(q.begin(),q.begin()+n,cmp);//sort对容器的使用   比较函数
        for(int i=0;i<n;i++)
            printf("%d ",q[i]);
        puts("");
        q.erase(q.begin()+2);//  删除第三个元素  时间复杂度 O(n);
        printf("%d 
    ",q.size());
        q.erase(q.begin(),q.begin()+2);
        for(vector<int> :: iterator it=q.begin();it!=q.end();it++)
            printf("%d ",*it);
        puts("");//删除
        return 0;
    }
    

      set

    #include<stdio.h>
    #include<iostream>
    #include<string.h>
    #include<queue>
    #include<stack>
    #include<list>
    #include<stdlib.h>
    #include<algorithm>
    #include<vector>
    #include<map>
    #include<set>
    using namespace std;
    
    int main()
    {
        int n,t;
        set<int >   q;
        multiset<int > q1;
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%d",&t);
            q.insert(t);
            q1.insert(t);  //插入
        }
        printf("%d 
    ",*q.find(100));  //multiset  find 返回第一个 查找元素的的 位置
        if(q.find(100)==q.end())
            printf(" no find 
    ");
        else
            printf("%d
    ",*q.find(100));//  find  找不到 怎返回 end()的地址
        return 0;
    }
    

      string

    #include<stdio.h>
    #include<iostream>
    #include<string.h>
    #include<queue>
    #include<stack>
    #include<list>
    #include<stdlib.h>
    #include<algorithm>
    #include<vector>
    #include<map>
    #include<set>
    using namespace std;
    
    int main()
    {
        char str[1000];
        string s;
        scanf("%s",str);
        s=str;
        s+="asdf";//  string 后直接添加字符串
        int len=s.length();//长度
        cout<<len<<endl;
        cout<<s.find('a')<<endl;  //find 函数 返回下标
        cout<<s<<endl;
        reverse(s.begin(),s.end());
        cout<<s<<endl;
        reverse(s.end(),s.begin());//  将 end 置于前
        cout<<s<<endl;
        int a;
        sscanf(str,"%d",&a);
        printf("%d
    ",a);
        sprintf(str,"%x",a);
        printf("%s
    ",str);  //  两个常用的字符串转换函数
        return 0;
    }
    

      map

    #include<stdio.h>
    #include<iostream>
    #include<string.h>
    #include<queue>
    #include<stack>
    #include<list>
    #include<stdlib.h>
    #include<algorithm>
    #include<vector>
    #include<map>
    #include<set>
    #include <fstream>
    using namespace std;
    struct node
    {
        int a;int b;
        bool operator < (const node &n) const
        {
            return n.a<a;
        }
    };//按node.a的值  从大到小
    int main()
    {
        int n;
        map<node,int>  q1;
        map<string,int>  q;
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            string  gg;
            cin>>gg ;
            q[gg]=i;
        }
        map<string ,int> :: iterator it;
        for(it = q.begin();it!=q.end();it++)
            cout<<(*it).first<<" ";
        cout<<endl;
        for(it = q.begin();it!=q.end();it++)
            cout<<(*it).second<<" ";
        cout<<endl;
        map<string,int>::reverse_iterator rit;
        for(rit = q.rbegin(); rit!=q.rend(); rit++)
            cout<<(*rit).first<<" ";//  map    访问方式 first  访问 key  second 访问 value
        cout<<endl;
        cin>>n;
        for(int i=0;i<n;i++){
            int a;int b;
            cin>>a>>b;
            node c;
            c.a=a;c.b=b;
            q1[c]=i;
        }
        map<node,int>::iterator nit;
        for(nit=q1.begin();nit!=q1.end();nit++){
            cout<<(*nit).second<<" ";
        }
        cout<<endl;
        return 0;
    }
    

      queue

    #include<stdio.h>
    #include<iostream>
    #include<string.h>
    #include<queue>
    #include<stack>
    #include<list>
    #include<stdlib.h>
    #include<algorithm>
    #include<vector>
    #include<map>
    #include<set>
    #include <fstream>
    using namespace std;
    struct cmp
    {
        bool operator () (const int &a,const int &b)
        {
            return a<b;
        }
    };//重载优先队列比较函数
    int main()
    {
        int n,t;
        priority_queue<int,vector<int>,cmp> q;
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%d",&t);
            q.push(t);
        }
        while(!q.empty()){
            int c=q.top();
            printf("%d ",c);
            q.pop();
        }
        return 0;
    }
    

      

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <climits>
    #include <string>
    #include <iostream>
    #include <map>
    #include <cstdlib>
    #include <list>
    #include <set>
    #include <queue>
    #include <stack>
    using namespace std;
    
    int main()
    {
        int n;
        set<int> q;
        int a[10000];int key;
        while(scanf("%d",&n)!=EOF){
            for(int i= 0;i<n;i++)
                scanf("%d",&a[i]),q.insert(a[i]);
            scanf("%d",&key);
            int tem=lower_bound(a,a+n,key) - a ;//比key大的最小数的下标  找不到返回右边界(一个越界的位置)
            int tem1=upper_bound(a,a+n,key) - a;
            cout<<tem1<<endl;
            cout<<tem<<endl;
            set<int>:: iterator it=q.begin();
            cout<<*q.lower_bound(key)<<endl;//比key大的最小数
        }
        return 0;
    }
  • 相关阅读:
    Post和Get的区别(兼谈页面间传值的方式)
    ClickOnce部署Winform程序的方方面面
    TSQL查询进阶深入浅出视图
    一个java volatile测试揭开的陷阱
    java volatile的一个验证反例
    [Swing扩展组件分享]为JTable添加选择列(CheckBox)的包装类
    JTextField限制输入长度的完美解决方案
    swing程序的关闭机制看好你的swing.Timer,别让它成为程序不能退出的原凶
    举例理解单元测试
    打印出txt中出现频率最高的十个词——软件工程个人项目C语言
  • 原文地址:https://www.cnblogs.com/yigexigua/p/3829302.html
Copyright © 2020-2023  润新知