• 10.3 c++ STL 初步


    #include<Windows.h>
    #include<iostream>
    #include<algorithm>  // sort  swap   min   max   lower_bound upper_bound reverse
    #include<string>
    #include<vector>
    #include<queue>  //队列  先进先出
    #include<stack>   //   stack是先进后出
    #include<set>
    #include<map>  

    其实 这一堆头文件,可以用一个万能头文件代替#include<bits/stdc++.h>

     

    #include<bits/stdc++.h>
    using namespace std;
    vector<int>v;
    int main(){
     for(int i=1;i<=10;i++)
      v.push_back(i);                //在vector类中作用为在vector尾部加入一个数据。
     for(auto x : v)                   //auto  输出v中有定义的
      {
      cout<<x<<endl;
     }

     

     

    #include<bits/stdc++.h>
    using namespace std;
    vector<int>v;
    vector<int>::iterator iter;
    int main(){
     for(int i=10;i>=1;i--)
      v.push_back(i);
     sort(v.begin(),v.end());    //排序,默认从小到大         //注意区间 v.begin(),v.end(),左闭右开
     for(auto x : v)
      cout<<x<<" ";
    }

     

    #include<bits/stdc++.h>
    using namespace std;
    vector<int>v;
    vector<int>::iterator iter;
    int main(){
     int a=10,b=20;
     cout<<a<<" "<<b<<endl;
     swap(a,b);              //交换
     cout<<a<<" "<<b<<endl;
    }

     

    #include<bits/stdc++.h>
    using namespace std;
    vector<int>v;
    vector<int>::iterator iter;
    int main(){
     int a=10,b=20;
     cout<<a<<" "<<b<<endl;
     a^=b;b^=a;a^=b;        //请记住  这是一个骚操作!!   交换a和b  两次 a^=b不一样
     cout<<a<<" "<<b<<endl;
    }

     

    #include<bits/stdc++.h>
    using namespace std;
    vector<int>v;
    vector<int>::iterator iter;
    int main(){
     int a[11];
     for(int i=1;i<=10;i++)
        v.push_back(i);
     int pos=lower_bound(v.begin(),v.end(),8)-v.begin();   //注意区间 v.begin(),v.end(),左闭右开
     cout<<pos<<endl;                      // -v.begin()为什么不能去掉 :格式
    }
    // lower_bound()返回一个 iterator
    //它指向在[first,last)标记的有序序列中可以插入value,
    //而不会破坏容器顺序的第一个位置,
    //而这个位置标记了一个第一个不小于value 的值。               
    //upper_bound  是第一个大于的     
    //  lower_bound 和upper_bound 是二分  ,而二分只对有序的 
     
     
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
     string s;                 //直接定义string     比数组啥的好用
     cin>>s;
     cout<<s<<endl;
    }
     
     
     
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
     string s;
     cin>>s;
     reverse(s.begin(), s.end());        //反转顺序  
     cout<<s<<endl;
     return 0;
    }
     
     
     
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
     string s="123456";
     cout<<s<<endl;
     return 0;
    }
     
     
     
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
     string s="123456";
     cout<<s[1]<<endl;            //输出2
     return 0;
    }
     
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
     string s="123456",s2="qwe";
     cout<<s+s2<<endl;            //可以直接相加
     return 0;
    }
     
     
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
     string s="123456",s2="qwe",s3=s+s2;   //没有减号
     cout<<s3<<endl;
     return 0;
    }
     
     
     
    #include<bits/stdc++.h>
    using namespace std;
    int a[100000];
    int main(){
     for(int i=1;i<=10;i++)
     {
      int x;cin>>x;
      if(a[x]==1) cout<<"YES"<<endl;      
      else cout<<"NO"<<endl;
      a[x]=1;         //如果此时输入的数字,没有出现过,那么输出no  并把这个数字标记为1,下次输入的时候,会输出yes
     }
     
     
    #include<bits/stdc++.h>               //此程序等同上一个,       在这里引入集合set  
    using namespace std;
    set<int>s;          //  For里 1e7  就会超过1s  就会炸掉     10 的7次方
    int main(){
     for(int i=1;i<=10;i++)
     {
      int x;cin>>x;
      if(!s.count(x))  cout<<"NO"<<endl;
      else cout<<"YES"<<endl;
      s.insert(x);
     }

     
     
     
     

    在queup   prior  优先队列 输入的自动排序 从小到大

     

    multiset<int >s     也是set 的一种形式,可以重复,从小到大自动排序

     

     

     
     
    #include<bits/stdc++.h> 
    using namespace std;
    priority_queue<int>a;          //队列 先进先出
    int main(){
     int b;
     for(int i=0;i<10;i++){
      cin>>b;
      a.push(b);
     }
     for(int i=0;i<10;i++){
     cout<<a.top()<<" ";
     a.pop();
     }   //取得队首元素操作top();   那 是最小的队首还是对大的:?
    }
    // 输入 1 52 4 3 88 66 44 77 121 100
    //  输出  121 100 88 77 66 52 44 4 3 1
    /*empty()      如果队列为空,则返回真
    pop()    删除对顶元素,删除第一个元素
    push()        加入一个元素
    size()      返回优先队列中拥有的元素个数
    top()     返回优先队列对顶元素,返回优先队列中有最高优先级的元素  */

     

  • 相关阅读:
    细说进程、应用程序域与上下文之间的关系
    sql server2008添加登录账户配置权限 && 登录时18456错误
    Sql CLR
    设计模式学习篇(一)
    常用实用方法
    OOP 6大基本原则
    如何成为一个优秀的程序员
    家庭网络
    反射
    ADO.Net 事务操作
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11620455.html
Copyright © 2020-2023  润新知