c++ sets
集合(set)是一種包含已排序物件的關聯容器
set insert 將x插入到容器當中自動遞增排序並去重
begin()
返回指向第乙個元素的迭代器
clear()
清除所有元素
count()
返回某個值元素的個數
empty()
如果集合為空,返回true
end()
返回指向最後乙個元素的迭代器
equal_range()
返回集合中與給定值相等的上下限的兩個迭代器
erase()
刪除集合中的元素
find()
返回乙個指向被查詢到元素的迭代器
get_allocator()
返回集合的分配器
insert()
在集合中插入元素
lower_bound()
返回指向大於(或等於)某值的第乙個元素的迭代器
key_comp()
返回乙個用於元素間值比較的函式
max_size()
返回集合能容納的元素的最大限值
rbegin()
返回指向集合中最後乙個元素的反向迭代器
rend()
返回指向集合中第乙個元素的反向迭代器
size()
集合中元素的數目
swap()
交換兩個集合變數
upper_bound()
返回大於某個值元素的迭代器
value_comp()
返回乙個用於比較元素間的值的函式
#include #include #include using namespace std;
int main(int argc, char const *argv) )
st.insert(i);
printf("for(int i:)st.insert(i):");
for(auto i:st)
printf("%d%c",i," \n"[i == 9]);
//find()返回乙個指向被查詢到元素的迭代器
cout << "set::iterator j = st.find(5):";
set::iterator j = st.find(5);
cout << *j << "\n";
//erase()刪除集合中的元素--刪除元素的迭代器
set::iterator i;
cout << "for(i = st.begin();i != st.end();i++)if(*i == 4)st.erase(i):";
for(i = st.begin();i != st.end();i++)
if(*i == 4)st.erase(i);
for(auto i:st)
printf("%d%c",i," \n"[i == 9]);
cout << "st.erase(st.find(1)):";
st.erase(st.find(1));
for(auto i:st)
printf("%d%c",i," \n"[i == 9]);
cout << "st.erase(5):";
st.erase(5);
for(auto i:st)
printf("%d%c",i," \n"[i == 9]);
//向st中輸入數值
//原容器中有6和9--set容器會自動去重
for(int i:)
st.insert(i);
printf("for(int i:)st.insert(i):");
for(auto i:st)
printf("%d%c",i," \n"[i == 9]);
//向st中插入2
//set容器會自動遞增排序
cout << "st.insert(2):";
st.insert(2);
for(auto i:st)
printf("%d%c",i," \n"[i == 9]);
//刪除2 - 6之前乙個元素
cout << "st.erase(fi,fj):";
set::iterator fi = st.find(2);
set::iterator fj = st.find(6);
st.erase(fi,fj);
for(auto i:st)
printf("%d%c",i," \n"[i == 9]);
//size()集合中元素的數目
(演算法練習) STL容器set的使用
要求 2020.2.20更新 用了find,ac了。事實證明昨天那種簡單粗暴使用新的set將兩個set整合到一起的做法很耗記憶體,雖然省時間,find查詢時間複雜度相對於暴力查詢稍稍優越點,但不必開拓新的空間 難得時間換空間。include include include using namespa...
Set容器的使用
set容器只是單純鍵的集合,如果想知道乙個值是否存在時,使用set容器比較合適。set容器中的鍵也是唯一的,不能修改,且set容器不能使用下標操作。以下使用程式說明set容器的使用 定義 插入 獲取 等 include stdafx.h include include include using n...
STL容器Set的使用
首先了解一下set,我們所知道的set是stl中的乙個容器,但是set實質上也是有不同的版本,我們最根本的劃分就是根據其底層實現分別是紅黑樹和hash表分為兩種,首先這兩種結構最本質的區別就是有序和無序,紅黑樹的儲存是有序的而hash表是無序儲存,但它並不影響set的最主要的用法就是查詢,而從查詢角...