與基本容器相比,關聯容器更注重快速和高效地檢索資料的能力。這些容器是根據鍵值(key)來檢索資料的,鍵可以是值也可以是容器中的某一成員。這一類中的成員在初始化後都是按一定順序排好序的。
set和multiset 容器類(集和多集):#include
內部它實現: 紅黑樹
插入刪除查詢複雜度log(n)
其中所包含的元素的值是唯一的(map)
允許重複元素
集合(set)是乙個容器,它其中所包含的元素的值是唯一的。這在收集乙個資料的具體值的時候是有用的。集合中的元素按一定的順序排列,並被作 為集合中的例項。如果你需要乙個鍵/值對(pair)來儲存資料,map(也是乙個關聯容器,後面將馬上要講到)是乙個更好的選擇。乙個集合通過乙個鍊錶 來組織,在插入操作和刪除操作上比向量(vector)快,但查詢或新增末尾的元素時會有些慢。
在集合中,所有的成員都是排列好的。如果先後往乙個集中插入:12,2,3,123,5,65
則輸出該集合為:2,3,5,12,65,123
集合(set)與多集(multiset)的區別是:set支援唯一鍵值,set中的值都是特定的,而且只出現一次;而multiset中可以出現副本鍵,同一值可以出現多次。
set和multiset的模板引數
template
在有些編譯器的具體實現中,第三個引數可以省略。第二個引數使用了合適形式的迭代器為鍵定義了特定的關係操作符,並用來在容器中遍歷值時建立順序。集合的迭代器是雙向,同時也是常量的,所以迭代器在使用的時候不能修改元素的值。
set定義了三個建構函式:
1、預設建構函式
explicit set(const compare&=compare());
如:set> set1;
less是乙個標準類,用於形成降序排列函式物件。公升序排列是用greater。
2、通過指定某一預先定義的區間來初始化set物件的建構函式
templateset(inputiterator, inputiterator, const compare&=compare());
如:set>set2(vector1.begin(),vector1.end());
3、複製建構函式
set(const set);
如:set>set3(set2);
set容器詳解:
標頭檔案 #include
定義變數 set myset;
主要成員函式:
multiset操作詳解:
標頭檔案 #include
定義變數 multiset mymulset;
主要成員函式
multiset用法:
#includeusing
namespace
std;
struct ss ;
struct
ltstr
};int
main()
#includemultiset舉例:using
namespace
std;
struct
ss };
intmain()
#include #includeusing
namespace
std;
int main(void
) else
if (set1.find(300) != set1.end())
else
int a = ;
multiset
a;a.insert(set1.begin(), set1.end());
a.insert(a, a + 10
); cout
<
for (multiset::iterator p = a.begin();p != a.end();++p)
cout
<< *p << "";
cin.
get();
return0;
}
STL 集和多集(set multiset)
與基本容器相比,關聯容器更注重快速和高效地檢索資料的能力。這些容器是根據鍵值 key 來檢索資料的,鍵可以是值也可以是容器中的某一成員。這一類中的成員在初始化後都是按一定順序排好序的。set和multiset 容器類 集和多集 include 內部它實現 紅黑樹 插入刪除查詢複雜度log n 其中所...
STL 集和多集(set multiset)
與基本容器相比,關聯容器更注重快速和高效地檢索資料的能力。這些容器是根據鍵值 key 來檢索資料的,鍵可以是值也可以是容器中的某一成員。這一類中的成員在初始化後都是按一定順序排好序的。set和multiset 容器類 集和多集 include 內部它實現 紅黑樹 插入刪除查詢複雜度log n 其中所...
set multiset(集與多集)
集與多集 set multiset v與基本容器相比,關聯容器更注重快速和高效地檢索資料的能力。這些容器是根據鍵值 key 來檢索資料的,鍵可以是值也可以是容器中的某一成員。這一類中的成員在初始化後都是按一定順序排好序的。vset 和multiset 容器類 集和多集 include n內部實現 紅...