STL学习笔记

 包含数据结构和数学函数

#include 

using namespace std;
bool cmp(pair a ,pair b){

    //第二位从小到大
    if(a.second!=b.second) return a.second < b.second;
    //第一位从大到小
    return a.first > b.first;

}
int gcd(int a,int b){
    if(!b) return a;
    else return gcd(b,a%b);
}
int lcm(int a,int b){
    return a /gcd(a,b) * b;
}
int main()
{
    //vector
    /*
    vectorvec(4,1);//4个全1数组
    //vector> vec2(10,vector(2));//10行2列的vector
    //vec.push_back(3);//尾加一个元素
    cout<<"长度是:"< sta;
    sta.push(1);
    sta.push(2);
    cout< vec2;
    vec2.push_back(1);
    vec2.push_back(2);
    vec2.pop_back();
    cout<que;
    que.push(1);
    que.push(2);
    que.push(3);
    cout<pque;//默认大顶堆
    pque.push(1);
    cout<,greater>pque2;//小顶堆
    //priority_queue,greater>pque2;//小顶堆
    pque2.push(1);
    cout<st;//去重,有序,从小到大
    st.insert(2);//插入
    st.insert(1);
    cout<::iterator it=st.begin();it!=st.end();++it)
        cout<<*it<mp;//键互异
    //mapmp2;
    mp[2]=1;
    cout<::iterator it=mp.begin();it!=mp.end();++it){
        cout<first<<" "<second<mp3;
    vectorvec;
    vec.push_back("awa");
    vec.push_back("awa");
    vec.push_back("awa");
    vec.push_back("awa");
    vec.push_back("bwb");
    vec.push_back("bwb");
    for(int i=0;ip1={1,2};
    pairp2={1,2};
    cout<>arr{{1,9},{2,9},{8,1},{0,0}};
    sort(arr.begin(),arr.end(),cmp);//cmp是一个函数,对这个排序进行特殊处理
    //cmp:第二个数从小到大,第一个数从大到小
    for(auto ele:arr) cout<x的第一个下标
    //lower_bound返回>=x的第一个下标
    /*
    vectorarr{0,1,1,1,8,9,9};

    //int pos = lower_bound(arr.begin(),arr.end(),8) - arr.begin();
    int pos = upper_bound(arr.begin(),arr.end(),8) - arr.begin();
    if(pos!=arr.size()) cout<<"yes"<arr{1,1,4,3,2,4,5,4};
    sort(arr.begin(),arr.end());// 1 1 2 3 4 4 4 5
    //unique以后1 2 3 4 5 *
    arr.erase(unique(arr.begin(),arr.end()),arr.end());//去除*到结尾
    for(auto &ele:arr) cout<

你可能感兴趣的:(c++,学习,笔记)