STL【C++】-創(chuàng)新互聯(lián)

STL中的基本容器:

成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)十余年經(jīng)驗(yàn)成就非凡,專業(yè)從事成都網(wǎng)站建設(shè)、成都網(wǎng)站制作,成都網(wǎng)頁設(shè)計(jì),成都網(wǎng)頁制作,軟文平臺(tái)一元廣告等。十余年來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:18980820575,我們期待您的來電!

vector :? 變長(zhǎng)數(shù)組 , 倍增的思想(由于系統(tǒng)為某一程序分配空間時(shí),所需時(shí)間與空間大小無關(guān),與申請(qǐng)次數(shù)有關(guān),所以每次增加數(shù)組長(zhǎng)度時(shí)會(huì)增加一倍(空間換時(shí)間))

pair : 存儲(chǔ)一個(gè)二元組

string : 字符串 , substr() , c_str()

queue : 隊(duì)列 , push() , front() , pop()

priority_queue : 優(yōu)先隊(duì)列 ,默認(rèn)是大根堆,?push() , top() , pop()

stack : 棧 , push() , top() , pop()

deque :? 雙端隊(duì)列(不常用,效率比一般的數(shù)組慢好幾倍)

set , map , multiset , multimap : 基于平衡二叉樹(紅黑樹),動(dòng)態(tài)維護(hù)有序序列

unordered_set , unordered_map , unordered_multiset , unordered_multimap : 哈希表

bitset :? 壓位


用到的頭文件:?

#include#include#include#include 
#include#include#include#include#include#include#include#include#include

基本用法:

一、vector

#includeint main()
{
    vectora , a(10) , a[10] , a(10,3);
    a.size(); //返回元素個(gè)數(shù) ,O(1)
    a.empty(); // 返回是否為空 , O(1)
    a.clear(); // 清空
    a.front()/a.back(); // 返回第一個(gè)/最后一個(gè)數(shù)
    a.push_back()/a.pop_back(); // 在最后插入一個(gè)數(shù)/刪掉最后一個(gè)數(shù)
    a.begin()/a.end(); // 返回第0個(gè)數(shù)/最后一個(gè)數(shù)后面的一個(gè)數(shù)
    a[8] , a[84]; // 隨機(jī)取址

    遍歷:
    一:
    for(int i = 0 ; i< 10 ; i ++) a.push_back(i);
    for(int i = 0 ; i< a.size() ; i ++) cout<< a[i]<< ' ' ;
    cout<< endl;
    二:迭代器:可以理解為指針,所以需要用*來取出值
    for(vector::iterator i = a.begin() ; i != a.end() ; i ++ ) cout<< *i<< ' ';
    cout<< endl;
    三:
    for(auto x : a) cout<< x<< ' ';
    cout<< endl;

    支持比較運(yùn)算(按字典序):
    vectora(4,3) , b(3,4);
    if(a< b) puts("a< b");

    return 0;
}

二、pair

int main()
{
    //創(chuàng)建和初始化:
    pair>P;  //<>里面可以是任意類型的兩個(gè)變量
    pairp(10,"abc");
    pairp1,p2; 
    p1 = make_pair(10 , "abc");
    p2 = p1;

    p2.first; // 第一個(gè)元素
    p2.second; // 第二個(gè)元素
    cout<< p2.first<< p2.second<< endl;

    支持比較運(yùn)算,以first為第一關(guān)鍵字,second為第二關(guān)鍵字(按字典序)

    return 0;
}

三、string

int main()
{
    string s;
    s.size(); //返回字符個(gè)數(shù)
    s.empty(); //返回字符串是否為空
    s.clear(); // 清空字符串

    支持加法運(yùn)算(每個(gè)加法運(yùn)算都有一個(gè)運(yùn)算符是string):
    s += "abc";
    s += 'c';

    s.substr(1,2); //返回某段字符串,第一個(gè)參數(shù)表示從這一位置(1)開始,第二個(gè)參數(shù)表示返回字符串長(zhǎng)度(2)
    s.substr(1); // 省略第二個(gè)參數(shù),返回從1(第一個(gè)參數(shù))開始到末尾的字符串

    輸出:
     cout<< s<< endl;
     printf("%s\n",s.c_str());
    
    return 0;
}

四、queue

#includeint main()
{
    queueq;
    q.size() , q.empty();
    q.push(5); // 向隊(duì)尾插入一個(gè)元素
    q.front(); // 返回隊(duì)頭元素
    q.back(); // 返回隊(duì)尾元素
    q.pop(); // 彈出隊(duì)頭元素

    q = queue(); // 清空只需要重新定義一下

    return 0;
}

五、priority_queue

#include#includeint main()
{
    priority_queueh;
    h.push(8);//插入一個(gè)元素
    h.top();//返回堆頂元素
    h.pop();//彈出堆頂元素

    定義成小根堆的方式:、
    priority_queue, greater>q;

    return 0;
}

六、stack

#includeint main()
{
    stacks;
    s.size(),s.empty();
    s.push(4); // 向棧頂插入一個(gè)元素
    s.top(); //返回棧頂元素
    s.pop(); //彈出棧頂元素

    return 0;
}

七、deque(不常用,效率低)

#includeint main()
{
    dequeq;
    q.size(),q.empty();
    q.front()/q.back(); //返回第一個(gè)/最后一個(gè)元素
    q.push_back()/q.pop_back(); //向最后插入一個(gè)元素/彈出最后一個(gè)元素
    q.push_front()/q.pop_front(); //從隊(duì)首插入/彈出隊(duì)首元素
    q.begin()/q.end(); //迭代器
    q.clear();
    q[5],q[8];//隨機(jī)取址

    return 0;
}

八、set、multiset、map、multimap(自動(dòng)排序)

#include#includeint main()
{
    增刪改查的操作時(shí)間復(fù)雜度都是O(logn)
    int x;
    public:
        size();
        empty();
        clear();
        begin()/end(); //支持++,--操作,返回前驅(qū)和后繼,O(logn)

    sets/multisetms; //set里面不允許有重復(fù)的數(shù)

        insert(x); //插入一個(gè)數(shù)(6)
        find(x); //查找一個(gè)數(shù)(4),不存在返回s.end()
        count(x); //返回某個(gè)數(shù)(5)的個(gè)數(shù)
        erase();//(1) 輸入是一個(gè)數(shù)x,刪除所有x  O(k+logn),k是x的個(gè)數(shù)
                //(2)輸入是一個(gè)迭代器,刪除迭代器
        lower_bound(x); //返回大于等于x的最小的數(shù)的迭代器
        upper_bound(x); //返回大于x的最小的數(shù)的迭代器

    mapa/multimapua;
        insert(x); //插入的數(shù)是一個(gè)pair
        erase(); //輸入的參數(shù)是pair或者迭代器
        find(x);
        a["abc"] = 1; //可以像數(shù)組一樣用,O(logn)
        lower_bound(x)/upper_bound(x);

    return 0;
}

九、unordered_set , unordered_map , unordered_multiset , unordered_multimap(不會(huì)自動(dòng)排序)

#include#includeint main()
{
    增刪改查的時(shí)間復(fù)雜度都是O(1)
    int x;
    public:
        size();
        empty();
        clear();

    unordered_sets/unordered_multisetms; //set里面不允許有重復(fù)的數(shù)

        insert(x); //插入一個(gè)數(shù)(6)
        find(x); //查找一個(gè)數(shù)(4),不存在返回s.end()
        count(x); //返回某個(gè)數(shù)(5)的個(gè)數(shù)
        erase();//(1) 輸入是一個(gè)數(shù)x,刪除所有x 
                //(2)輸入是一個(gè)迭代器,刪除迭代器

    unordered_mapa/unordered_multimapua;
        insert(x); //插入的數(shù)是一個(gè)pair
        erase(); //輸入的參數(shù)是pair或者迭代器
        find(x);
        a["abc"] = 1; //可以像數(shù)組一樣用

    return 0;
}

十、bitset

#includeint main()
{
   bitset<10000>s;
   支持所有位運(yùn)算:
    ~ , & , | , ^ , >>,<< , == , != , []
    
    count(); //返回有多少個(gè)1
    any(); //判斷是否至少有一個(gè)1
    none(); // 判斷是否全為0

    set(); // 把所有位置成1、
    set(k,v); // 將第k為變成v
    reset(); // 把所有位變成0
    flip(); // 等價(jià)于~
    flip(k) ; // 把第k位取反

    return 0;
}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

名稱欄目:STL【C++】-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://muchs.cn/article12/idgdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、云服務(wù)器、網(wǎng)站策劃、網(wǎng)站排名、網(wǎng)站導(dǎo)航、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管