程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> STL--集和多集(set/multiset)

STL--集和多集(set/multiset)

編輯:C++入門知識

與基本容器相比,關聯容器更注重快速和高效地檢索數據的能力。這些容器是根據鍵值(key)來檢索數據的,鍵可以是值也可以是容器中的某一成員。這一類中的成員在初始化後都是按一定順序排好序的。 set和multiset 容器類(集和多集):#include<set> <set> 內部它實現: 紅黑樹 插入刪除查找復雜度log(n) 其中所包含的元素的值是唯一的(map) <multiset> 允許重復元素 集合(set)是一個容器,它其中所包含的元素的值是唯一的。這在收集一個數據的具體值的時候是有用的。集合中的元素按一定的順序排列,並被作為集合中的實例。如果你需要一個鍵/值對(pair)來存儲數據,map(也是一個關聯容器,後面將馬上要講到)是一個更好的選擇。一個集合通過一個鏈表來組織,在插入操作和刪除操作上比向量(vector)快,但查找或添加末尾的元素時會有些慢。 在集合中,所有的成員都是排列好的。如果先後往一個集中插入:12,2,3,123,5,65 則輸出該集合為:2,3,5,12,65,123 集合(set)與多集(multiset)的區別是:set支持唯一鍵值,set中的值都是特定的,而且只出現一次;而multiset中可以出現副本鍵,同一值可以出現多次。 set和multiset的模板參數

在有些編譯器的具體實現中,第三個參數可以省略。第二個參數使用了合適形式的迭代器為鍵定義了特定的關系操作符,並用來在容器中遍歷值時建立順序。集合的迭代器是雙向,同時也是常量的,所以迭代器在使用的時候不能修改元素的值。 set定義了三個構造函數: 1、默認構造函數 explicit set(const Compare&=compare()); 如:set<int,less<int> > set1; less<int>是一個標准類,用於形成降序排列函數對象。升序排列是用greater<int>。 2、通過指定某一預先定義的區間來初始化set對象的構造函數 template<class InputIterator> set(InputIterator, InputIterator, const Compare&=compare()); 如:set<int ,less<int> >set2(vector1.begin(),vector1.end()); 3、復制構造函數 set(const set<Key,Compare&>); 如:set<int ,less<int>>set3(set2);   set容器詳解: 頭文件  #include <set> 定義變量  set <int> myset; 主要成員函數:
multiset操作詳解: 頭文件  #include <set> 定義變量  multiset <int> mymulset; 主要成員函數
multiset用法: Code1 Code2

multiset舉例:

View Code

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved