set 容器的使用(胡凡 演算法筆記)
阿新 • • 發佈:2018-11-08
C++ Sets
集合(Set)是一種包含已排序物件的關聯容器
set insert 將x插入到容器當中自動遞增排序並去重
返回指向第一個元素的迭代器 |
|
清除所有元素 |
|
返回某個值元素的個數 |
|
如果集合為空,返回true |
|
返回指向最後一個元素的迭代器 |
|
返回集合中與給定值相等的上下限的兩個迭代器 |
|
刪除集合中的元素 |
|
返回一個指向被查詢到元素的迭代器 |
|
返回集合的分配器 |
|
在集合中插入元素 |
|
返回指向大於(或等於)某值的第一個元素的迭代器 |
|
返回一個用於元素間值比較的函式 |
|
返回集合能容納的元素的最大限值 |
|
返回指向集合中最後一個元素的反向迭代器 |
|
返回指向集合中第一個元素的反向迭代器 |
|
集合中元素的數目 |
|
交換兩個集合變數 |
|
返回大於某個值元素的迭代器 |
|
返回一個用於比較元素間的值的函式 |
#include <iostream>
#include <cstdio>
#include <set>
using namespace std;
int main(int argc, char const *argv[]) {
set<int> st;
//向st中輸入數值
for(int i:{1,4,5,6,9})
st.insert(i);
printf("for(int i:{1,4,5,6,9})st.insert(i):");
for(auto i:st)
printf("%d%c",i," \n"[i == 9]);
//find()返回一個指向被查詢到元素的迭代器
cout << "set<int>::iterator j = st.find(5):";
set<int>::iterator j = st.find(5);
cout << *j << "\n";
//erase()刪除集合中的元素--刪除元素的迭代器
set<int>::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:{1,4,5,6,9})
st.insert(i);
printf("for(int i:{1,4,5,6,9})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<int>::iterator fi = st.find(2);
set<int>::iterator fj = st.find(6);
st.erase(fi,fj);
for(auto i:st)
printf("%d%c",i," \n"[i == 9]);
//size()集合中元素的數目
cout << "st.size():";
cout << st.size() << "\n";
return 0;
}