set容器,容器內部將資料自動排序(平衡二叉樹),不能插入重複元素。multiset可以插入重複元素。不能修改容器中的值,通過刪除值,在插入。
#define _crt_secure_no_warnings#include#include
#include
#include
using
namespace
std;
struct
mycomapre
};void printmyset(set
&s)
cout
<1. /*
setst;//set預設建構函式:
mulitsetmst; //multiset預設建構函式:
set(const set &st);//拷貝建構函式
insert(elem);//在容器中插入元素。
clear();//清除所有元素
erase(pos);//刪除pos迭代器所指的元素,返回下乙個元素的迭代器。
erase(beg, end);//刪除區間[beg,end)的所有元素 ,返回下乙個元素的迭代器。
erase(elem);//刪除容器中值為elem的元素。
*/void
test01()
else
s.insert(3);
s.insert(9);
s.insert(6);
ret = s.insert(2
);
if(ret.second)
else
//刪除第乙個元素的
s.erase(2
); s.erase(s.begin());
//set容器迭代器什麼型別?雙向迭代器
printmyset(s);
}void print(const
int &val)
void
test02()
//3. set查詢操作
/*find(key);//查詢鍵key是否存在,若存在,返回該鍵的元素的迭代器;若不存在,返回set.end();
count(key);//查詢鍵key的元素個數
lower_bound(keyelem);//返回第乙個key>=keyelem元素的迭代器。
upper_bound(keyelem);//返回第乙個key>keyelem元素的迭代器。
equal_range(keyelem);//返回容器中key與keyelem相等的上下限的兩個迭代器。
*/void
test03()
else
cout
<< "
值為2的元素有:
"<< s.count(12) << "個!"
/lower_bound upper_bound
it = s.lower_bound(2
);
if (it ==s.end())
else
it = s.upper_bound(2
);
if (it ==s.end())
else
cout
<< "
------------------------
"
::iterator, set
::iterator> ret = s.equal_range(2
); cout
<< *(ret.first)
<< *(ret.second) <自定義資料型別
class
person
public
:
string
mname;
intmage;
};struct
personrule
};void
test04()
cout
<< "
----------------------
"/!personrule()(p1, p2) && !personrule()(p2, p1)
set::iterator it = s.find(person("
aaa", 20
));
if (it ==s.end())
else
}int
main()
發表於
2017-05-02 14:48
天碼丶行滿 閱讀(
...)
編輯收藏
重新整理頁面
返回頂部
STL set集合容器常用用法
set集合容器 實現了紅黑樹的平衡二叉檢索樹的資料結構,插入元素時,它會自動調整二叉樹的排列,把元素放到適當的位置,以保證每個子樹根節點鍵值大於左子樹所有節點的鍵值,小於右子樹所有節點的鍵值 另外,還得保證根節點左子樹的高度與右子樹高度相等。平衡二叉檢索樹使用中序遍歷演算法,檢索效率高於vector...
STLset容器排序
學習目標 set容器預設排序規則為從小到大,掌握如何改變排序規則 主要技術點 利用仿函式,可以改變排序規則 示例一 include include using namespace std set容器排序 class mycompare void test01 cout endl 指定排序規則為從小到...
c 常用容器API
vector 1.vector建構函式 vector v 採用模板實現類實現,預設建構函式 vector v.begin v.end 將v begin end 區間中的元素拷貝給本身 vector n,elem 建構函式將n個elem拷貝給本身 vector const vector vec 拷貝建...