c++ set

來源:互聯網
上載者:User

標籤:getline   logs   clear   ios   html   樣本   src   base   cin   

set 容器儲存互不相同的元素,使之有序的容器。

在一個set中,元素的值不能修改(總是常量元素),但它們可以被插入或刪除。

內部通常由自平衡二叉搜尋樹實現。

下面是範例程式碼

#include<iostream>#include<set>using namespace std;int main(){    set<int> s;    s.insert(20);    s.insert(30);    s.insert(10);    cout<<"myset contains:";    while(!s.empty())    {        cout<<‘ ‘<<*s.begin();        s.erase(s.begin());    }    cout<<endl;    int myints[]={21,64,17,78,49};    set<int> myset(myints,myints+5);    set<int>::reverse_iterator rit;    cout<<"myset contains:";    for(rit=myset.rbegin();rit!=myset.rend();++rit)    {        cout<<‘ ‘<<*rit;    }    cout<<endl;    myset.clear();    for(int i=1;i<10;i++) myset.insert(i*10);    set<int>::iterator it=myset.begin();    ++it;    myset.erase(it);   //刪除迭代器位置的數即20    myset.erase(40);   //刪除40    it=myset.find(60); //尋找某個數的迭代器    myset.erase(it,myset.end());  //刪除這一段    cout<<"myset contains:";    for(it=myset.begin();it!=myset.end();++it)    {        cout<<‘ ‘<<*it;    }    cout<<endl;    myset.clear();    for(int i=1;i<10;i++) myset.insert(i*10);    set<int>::iterator itlow=myset.lower_bound(30);  //返回>=30的第一個迭代器    set<int>::iterator itup=myset.upper_bound(60);   //返回>60的第一個迭代器    myset.erase(itlow,itup);    cout<<"myset contains:";    for(set<int>::iterator it=myset.begin();it!=myset.end();++it)    {        cout<<‘ ‘<<*it;    }    cout<<endl;    return 0;}

setmultiset的差別在於multiset允許多個元素的值相同。

若使用multiseterase(x)會刪除所有值為 xx 的元素。

unordered_set 是無序的集合,能夠較快地檢索,本質上是 雜湊表。

 

下面是範例程式碼 我沒太弄懂這裡面的bucket和hash

#include<iostream>#include<string>#include<unordered_set>using namespace std;int main(){    unordered_set<string> myset={"red","green","blue"};    string input;    getline(cin,input);    //const_iterator迭代器是不能改變其所指向的元素的值的    unordered_set<string>::const_iterator got=myset.find(input);    if(got==myset.end())        cout<<"not found in myset";    else cout<<*got<<" is in myset";    cout<<endl;    return 0;}

 

c++ set

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.