1. 程式人生 > >set 容器的使用(胡凡 演算法筆記)

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

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 <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;
}