set 容器的使用(胡凡 演算法筆記)

2021-08-30 19:28:08 字數 2490 閱讀 2353

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的最主要的用法就是查詢,而從查詢角...