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;
}
原文地址:https://www.cnblogs.com/yigexigua/p/3829302.html