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("\n");

    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 \n",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 \n",*q.find(100));  //multiset  find 返回第一个 查找元素的的 位置

    if(q.find(100)==q.end())

        printf(" no find \n");

    else

        printf("%d\n",*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\n",a);

    sprintf(str,"%x",a);

    printf("%s\n",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;

}

 

你可能感兴趣的:(STL)