C++ set容器-55-集合容器基本概念和构造赋值操作

这篇开始学习set容器,set容器经常也叫集合容器。set容器有一个非常鲜明的特点就是插入元素后,实现自动排序功能。这篇先来学习set/multiset容器的基本概念和构造方法和赋值操作


1.set基本概念
所有的元素在插入时自动被排序

本质:
set/multiset属于关联式容器,底层结构是用二叉树实现。

 

2.set和multiset区别
set不允许容器中有重复的元素
multiset运行容器中有重复的元素

 

3.set构造和赋值
先来学习下如何创建set和mutliset容器和赋值操作。有两种构造函数,默认无参构造和拷贝构造,拷贝构造中传入的是另外一个set对象。

#include 
#include 
#include 
using namespace std;


void printSet(const set& st)
{
    for(set::const_iterator it = st.begin(); it != st.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}

void test01()
{
    // set的默认构造
    set st;

    // 插入元素
    st.insert(20);
    st.insert(30);
    st.insert(10);
    st.insert(50);
    printSet(st);

    // 拷贝构造
    set st2(st);
    printSet(st2);

}

int main()
{
    test01();
    system("pause");
    return 0;
}

运行结果

C++ set容器-55-集合容器基本概念和构造赋值操作_第1张图片

 

接下来看看赋值,赋值函数就是重载=符号

#include 
#include 
#include 
using namespace std;


void printSet(const set& st)
{
    for(set::const_iterator it = st.begin(); it != st.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}

void test01()
{
    // set的默认构造
    set st;

    // 插入元素
    st.insert(20);
    st.insert(30);
    st.insert(10);
    st.insert(50);
    st.insert(50);
    printSet(st);

    // 赋值
    set st2 = st;
    printSet(st2);

}

int main()
{
    test01();
    system("pause");
    return 0;
}

上面有两个点,第一个是测试set容器插入重复元素,看看打印是不是有两个50,第二个是赋值操作,s2 =st

C++ set容器-55-集合容器基本概念和构造赋值操作_第2张图片

 

4.multiset构造和赋值

上面已经说了multiset容器支持重复元素,下面也来代码测试一下

#include 
#include 
#include 
using namespace std;


void printSet(const multiset& mst)
{
    for(multiset::const_iterator it = mst.begin(); it != mst.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}

void test01()
{
    // set的默认构造
    multiset mst;

    // 插入元素
    mst.insert(20);
    mst.insert(30);
    mst.insert(10);
    mst.insert(50);
    mst.insert(50);
    printSet(mst);

}

int main()
{
    test01();
    system("pause");
    return 0;
}

运行结果

注意点:

1)不管set还是multiset,在头文件引入只需要set.h这个头文件

2)上面代码也证明了multiset容器可以存入多个重复的元素

 

 

你可能感兴趣的:(C++学习笔记)