91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c++中集合怎么使用

發布時間:2021-11-24 10:28:44 來源:億速云 閱讀:242 作者:iii 欄目:互聯網科技

這篇文章主要講解了“c++中集合怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“c++中集合怎么使用”吧!

*****建議用baistl標準模板庫中的std::set——元素du不允zhi許重復dao,或者std::multiset——元素允許重復。這兩種集合效zhuan率非常高。

*****
*****用法舉bai例:
std::set<int> mySet;
int a,b,c,d;
a=1;
a=2;
a=3;
a=4;
mySet.insert(a);
mySet.insert(b);
mySet.insert(c);
mySet.insert(d); //erase()、find()、size()對應刪除、查找、求元素個數的函數
也許你會問,為什么不直接用數組?std::set相當數組最大的優勢是,集合中的元素都是按關鍵值排序的。std::set遇到關鍵值重復的,只保存一個值;而std::multiset允許重復元素并列存在。

===============

c++中的集合set是非常好用的,尤其是在求一些交集、并集、或者是輸出不重復的數。
需要注意的是,set是自動從小到大排序的,而且自動去除了重復的元素。
以下是幾個非常常見好用的方法:
1、insert()
將insert中的元素放入集合中,具體用法如下:

#include <iostream>
#include<set>
using namespace std;
int main() {
    set<int> s;
    s.insert(1);//將1放入集合s中 
    return 0;
}

2、find()
find(value)返回的是set值對應為value的迭代器;

#include <iostream>
#include<set>
using namespace std;
int main() {
    set<int> s;
    s.insert(1);
    s.insert(2);
    auto it=s.find(2);
    cout<<*it;//輸出結果為2
    return 0;
}

3、erase()
erase()有兩種用法:刪除某一元素、刪除一個區間內的所有元素
①刪除單個元素:
可以配合find函數一起使用

#include <iostream>
#include<set>
using namespace std;
int main() {
    set<int> s;
    s.insert(1);
    s.insert(2);
    s.erase(s.find(2));//刪除元素2
    cout<<s.size();//此時集合中只有一個元素1
    return 0;
}


②刪除一個區間的元素:
erase(first,last)刪除[first,last)的元素,這里是左開右閉的

#include <iostream>
#include<set>
using namespace std;
int main() {
    set<int> s;
    s.insert(1);
    s.insert(2);
    s.insert(3);
    s.insert(4);
    s.insert(5);
    auto it=s.find(2);//it指向的是2在集合中的地址
    s.erase(s.begin(),it);//刪除從開始到2的元素(注意,這里不包括2)
    for(it=s.begin();it!=s.end();it++){
        cout<<*it<<" "; 
    }
    cout<<endl;
    cout<<s.size();//此時容器的容積為4;
    return 0;
}

此時的輸出:
在這里插入圖片描述
需要注意的是,除了vector和string支持s.begin()+3這樣的迭代器加上數字的形式,在別的里面是不成立的,比如上述代碼如果寫成s.erase(s.begin(),2);是不成立的;
4、size()
用來獲得集合中元素的個數,代碼如下:

#include <iostream>
#include<set>
using namespace std;
int main() {
    set<int> s;
    s.insert(1);
    s.insert(2);
    s.insert(3);
    s.insert(4);
    s.insert(5);
    cout<<s.size();//此時輸出的是5
    return 0;
}

5、clear()
用來清空集合中所有的元素,比如

#include <iostream>
#include<set>
using namespace std;
int main() {
    set<int> s;
    s.insert(1);
    s.insert(2);
    s.insert(3);
    s.insert(4);
    s.insert(5);
    cout<<s.size();
    s.clear();
    cout<<endl<<s.size();
    return 0;
}

此時的輸出在這里插入圖片描述
clear 函數等價于erase(s.begin(),s.end()),結果是一樣的
6、end()
只需要注意一點,end指的是集合中最后一個元素地址的下一個地址。
最后一個元素的地址是rbegin()

#include <iostream>
#include<set>
using namespace std;
int main() {
    set<int> s;
    s.insert(1);
    s.insert(2);
    s.insert(3);
    s.insert(4);
    s.insert(5);
    s.insert(100);
    auto it=s.rbegin();
    cout<<*it;//此時輸出100
    return 0;
}

由與set自動排序,可能會導致某些時候出現運行超時的情況,可以換成unorder_set,這樣就不會自動排序了,時間會快很多!

感謝各位的閱讀,以上就是“c++中集合怎么使用”的內容了,經過本文的學習后,相信大家對c++中集合怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

丰台区| 吴堡县| 乌鲁木齐县| 陆川县| 庄河市| 阜新市| 巴里| 湖州市| 抚松县| 镇原县| 泸州市| 哈尔滨市| 北碚区| 隆安县| 虹口区| 固安县| 定安县| 麟游县| 中山市| 嵩明县| 晋城| 昌图县| 贵溪市| 金川县| 盐边县| 广南县| 仁怀市| 梅州市| 南城县| 广饶县| 威宁| 吉木乃县| 托里县| 红安县| 新沂市| 芷江| 连平县| 全南县| 澄城县| 胶州市| 凌海市|