C++中 set 基本方法
阿新 • • 發佈:2019-01-25
set 集合
常用方法:
方法 | 功能 |
insert | 插入一個元素 |
erase | 刪除一個元素 |
count | 判斷元素是否在set中 |
size | 獲取元素大小 |
clear | 清空 |
set具有和數學中“集合”類似的屬性,set由不重複的資料組成,插入、查詢、刪除、和查詢的時間複雜度都為O(lgn).而陣列雖然插入的時間複雜度為O(1),但刪除、查詢都為O(n),時間效率低。
初始化一個集合
C++中直接構造一個set的語句為:
set<T> s;//定義一個儲存T型別、名為s的集合,初始時s為空
插入元素
#include <set> #include<string> #include<iostream> using namespace std; int main() { set<string> fruits; fruits.insert("apple"); fruits.insert("apple"); fruits.insert("banana"); fruits.insert("mango"); for(set<string>::iterator it = fruits.begin(); it != fruits.end(); it++){ cout << *it << endl; } return 0; }
注意到上邊的程式碼裡有兩個fruits.insert("apple");那麼此時集合裡的元素都有什麼呢?
C++用insert()方法向集合中插入一個新的元素.如果集合中已經存在了這個元素,再次插入不會產生任何效果,集合中不會出現重複元素
刪除元素
#include <set> #include<string> #include<iostream> using namespace std; int main() { set<string> fruits; fruits.insert("apple"); fruits.insert("banana"); fruits.insert("mango"); fruits.erase("apple"); fruits.erase("banana"); fruits.erase("orange"); for(set<string>::iterator it = fruits.begin(); it != fruits.end(); it++){ cout << *it << endl; } return 0; }
c++中通過erase()方法刪除集合中一個元素,如果集合中不存在這個元素,則不進行任何操作
查詢元素
#include <set> #include<string> #include<iostream> using namespace std; int main() { set<string> fruits; fruits.insert("apple"); fruits.insert("banana"); fruits.insert("mango"); if(fruits.count("apple")){ cout << "We have apple!" << endl; } return 0; }
count()方法可以查詢一個元素是否在集合中,如果存在返回 1,否則返回 0
遍歷元素
#include <set>
#include<string>
#include<iostream>
using namespace std;
int main() {
set<string> fruits;
fruits.insert("apple");
fruits.insert("banana");
fruits.insert("mango");
for(set<string>::iterator it = fruits.begin();
it != fruits.end(); it++){
cout << *it << endl;
}
return 0;
}
通過迭代器可以訪問集合中每一個元素,C++標準庫容器都可以使用迭代器,但是其中只有少數幾種支援下標運算子,如果你還不太理解迭代器,那就把它想成指標吧
清空
C++中只需要呼叫clear()方法就可以清空set
fruits.clear();
注意用clear()清空set並不會釋放其再計算機中開闢的記憶體,如果想釋放set的記憶體,把一個空set賦給它就好了