set的常見用法


set的使用

set是什么

set是一個內部有序且不含重復元素的容器

用處

*使得元素自動有序
*去除重復元素

set的引入

    # include <set>
    using namespace std;

set的定義

    set<typename> name;
    //typename可以是任何類型,比如int、float、或者結構體、對象

定義的實際例子

    set<int> name;
    set<float> name;
    set<double> name;
    set<node> name;//node是一個結構體
    set<typename> array[max_size];//定義一個set類型的數組

set的使用

set內部的元素的訪問

set只能通過迭代器來進行訪問

    //定義迭代器的時候要填寫實際的類型
    set<typename>::iterator it;
    set<int>::iterator it;
    set<char>::iterator it;

除了vector和string外的stl容器都不支持*(it+i)的訪問方式

元素的插入

# include <iostream>
# include <set>
using namespace std;
int main(void)
{
    set<int> st;
    st.insert(3);
    st.insert(2);
    st.insert(7);
    st.insert(1);
    for(set<int>::iterator it=st.begin();it!=st.end();it++)
    {
        cout<<*it<<endl;
    }
    return 0;
}

set常見函數的使用

insert

insert(x)將x插入set,並自動使得該元素有序且可以去重

find

find(value)查找到集合中值等於value位置的迭代器

# include <iostream>
# include <set>
using namespace std;
int main(void)
{
    set<int> st;
    for(int i=0;i<4;i++)
    {
        st.insert(i);
    }
    set<int>::iterator it=st.find(3);
    cout<<*it<<endl;
    return 0;
}

erase()

erase有兩種用法:
1.刪除單個元素
1)erase(it),it為要刪除元素的迭代器

# include <iostream>
# include <set>
using namespace std;
int main(void)
{
    set<int> st;
    st.insert(1);
    st.insert(2);
    st.insert(3);
    st.insert(4);
    st.erase(st.find(2));
    for(set<int>::iterator it=st.begin();it!=st.end();it++)
    {
        cout<<*it<<' ';
    }
    cout<<endl;
    return 0;
}

2)erase(value),value為要刪除的值

# include <iostream>
# include <set>
using namespace std;
int main(void)
{
    set<int> st;
    st.insert(1);
    st.insert(2);
    st.insert(3);
    st.insert(4);
    st.erase(4);
    for(set<int>::iterator it=st.begin();it!=st.end();it++)
    {
        cout<<*it<<' ';
    }
    cout<<endl;
    return 0;
}

2.刪除一個區間內的元素

# include <iostream>
# include <set>
using namespace std;
int main(void)
{
    set<int> st;
    st.insert(1);
    st.insert(2);
    st.insert(3);
    st.insert(4);
    st.erase(4);
    set<int>::iterator it=st.find(1);
    st.erase(it,st.end());
    for(set<int>::iterator it=st.begin();it!=st.end();it++)
    {
        cout<<*it<<' ';
    }
    cout<<endl;
    return 0;
}

size()

用來獲取集合元素數量

# include <iostream>
# include <set>
using namespace std;
int main(void)
{
    set<int> st;
    st.insert(1);
    st.insert(2);
    st.insert(3);
    st.insert(4);
    st.erase(4);
    cout<<st.size()<<endl;
    return 0;
}

clear()

清空所有元素

# include <iostream>
# include <set>
using namespace std;
int main(void)
{
    set<int> st;
    st.insert(1);
    st.insert(2);
    st.insert(3);
    st.insert(4);
    st.clear();
    cout<<st.size()<<endl;
    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM