一、set容器
1、關聯式容器,內部插入資料時候自動排序,不允許插入重複的key值
2、set/multiset容器不可以通過迭代器修改裡面的元素,因為預設有了排序規則,其底層實現是紅黑樹,紅黑樹是平衡二叉樹的一種
3、樹的簡單知識
3.1二叉樹:任何節點最多隻允許有兩個子節點,分別為左子節點和右子節
3.2平衡二叉樹:左子樹與右子樹的高度的絕對值不能大於1,且這棵樹的子樹也必須是平衡二叉樹
3.3二叉搜尋樹:比節點小的數在左節點比節點大的數在右節點
4、刪除erase(key)
5、find 查詢 查詢容器中是否有響應的key資料,如果有返回迭代器,沒有返回end的位置
6 、count(key)查詢鍵key的元素個數 返回值為int 對於set而言結果是0或者1
7、lower_bound(keyelem) 返回第乙個key>=keyelem元素的迭代器 若未找到返回end()
8、upper_bound(keyelem)返回第乙個key>keyelem元素的迭代器 若未找到返回end()
9、equal_range(keyelem)返回容器中key與keyelem相等的上下限的兩個迭代器 返回乙個對組pair,若未找到均 返回end()
10、對組宣告方式
10.1 第一種宣告 pairp(string("tom"), 18);
10.2 第二種宣告 pairp2 = make_pair("jerry",20);
10.3 訪問第乙個元素first ,第二個元素second,不是方法,相當於類
10、set容器只能插入不重複key值
10.1 insert返回值是pair
10.2bool代表了插入是否成功
11 對於set容器排序
11.1 預設從小到大排序
11.2 若要指定排序規則必須在插入之前,配合仿函式實現,set
11.3 自定義資料型別,必須指定出排序規則
#include "pch.h"
#include #include//set multiset標頭檔案
#includeusing namespace std;
void printset(const set&s)
void test01()
//查詢
void test02()
else
//count(key)查詢鍵key的元素個數 返回值為int
//對於set而言結果是0或者1
int num = s.count(10);
cout << "10的個數為: " << num << endl;
//lower_bound(keyelem) 返回第乙個key>=keyelem元素的迭代器
//若未找到返回end()
set::iterator res = s.lower_bound(30);
if (res != s.end())
else
//upper_bound(keyelem)返回第乙個key>keyelem元素的迭代器
//若未找到返回end()
set::iterator res2 = s.upper_bound(30);
if (res2 != s.end())
else
//equal_range(keyelem)返回容器中key與keyelem相等的上下限的兩個迭代器
pair::iterator, set::iterator> it=s.equal_range(30);
if (it.first != s.end())
else
if (it.second != s.end())
else }
//對組宣告
void test03()
else
pair::iterator, bool> ret2 = s.insert(10);
if (ret2.second)
else
printset(s);
multisetms;
ms.insert(10);
ms.insert(10);
for (multiset::const_iterator it = ms.begin(); it != ms.end(); it++)
cout << *it << " ";
cout << endl;
}//利用仿函式(函式物件) 指定set容器的排序規則
class mycompare
};void test05()
cout << endl;
}//對於自定義資料型別,必須指定排序規則
//自定義資料
class person
string m_name;
int m_age;
};//仿函式 排序規則指定
class mycompareperson
};void test06()
}int main()
STL學習之set容器
set容器只是單純的鍵的集合。除了兩種例外情況外,set容器支援大部分的map操作。建構函式 cpp view plain copy explicit set const compare comp compare const allocator allocator template class in...
C 學習筆記 STL常用容器 set和map
set 所有元素在插入時自動排序,底層結構用二叉樹實現。set和multiset的區別 set不允許容器中有重複的元素,multiset允許容器中有重複的元素。set構造和賦值 構造 預設建構函式 setst 拷貝建構函式 set const set st 賦值 過載等號操作符 set operat...
STL學習2常用容器2 8map multimap
1 關聯式容器,key和value每個元素都是對組 2 所有元素根據元素的鍵值自動排序,所有元素都是pair同時擁有實值和鍵值,其中第乙個元素為鍵值,第二個為實值,可以允許 兩個元素的實值相同,不允許鍵值相同,可以通過迭代器改變元素的實值不能改變鍵值 3 map與list擁有相同的某些性質,在進行元...