• C++之set/multise容器


    C++之set/multise容器

    set基本概念
    在这里插入图片描述

    set构造和赋值

    在这里插入图片描述

    #include 
    #include
    using namespace std;
    
    void PrintfSet(set&s)
    {
        for(set::iterator it = s.begin();it != s.end();it++)
        {
            cout<<*it<<" ";
        }
        cout< s1;
    
        //插入数据,只有insert方式
        s1.insert(10);
        s1.insert(40);
        s1.insert(20);
        s1.insert(40);
        s1.insert(30);
    
        //set容器特点: 所有元素插入时候自动被排序
        //set容器不允许插入重复值
        PrintfSet(s1);
    
        //拷贝构造
        sets2(s1);
        PrintfSet(s2);
    
        //赋值操作
        sets3;
        s3 = s1;
        PrintfSet(s3);
    }
    
    int main()
    {
        test();
        cout << "Hello World!" << endl;
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    在这里插入图片描述

    set大小和交换

    在这里插入图片描述

    #include 
    #include
    using namespace std;
    
    void PrintfSet(set&s)
    {
        for(set::iterator it = s.begin();it != s.end();it++)
        {
            cout<<*it<<" ";
        }
        cout< s1;
    
        //插入数据,只有insert方式
        s1.insert(10);
        s1.insert(40);
        s1.insert(20);
        s1.insert(40);
        s1.insert(30);
    
        //set容器特点: 所有元素插入时候自动被排序
        //set容器不允许插入重复值
        PrintfSet(s1);
    
        if(s1.empty())
        {
            cout<<"s1 is empty"<s2;
        s2.insert(100);
        s2.insert(200);
        s2.insert(300);
        s2.insert(400);
        //swap
        cout<<"before swap"<
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61

    在这里插入图片描述

    set插入和删除

    在这里插入图片描述

    #include 
    #include
    using namespace std;
    
    void PrintfSet(set&s)
    {
        for(set::iterator it = s.begin();it != s.end();it++)
        {
            cout<<*it<<" ";
        }
        cout< s1;
    
        //插入数据,只有insert方式
        s1.insert(10);
        s1.insert(40);
        s1.insert(20);
        s1.insert(40);
        s1.insert(30);
    
        //set容器特点: 所有元素插入时候自动被排序
        //set容器不允许插入重复值
        PrintfSet(s1);
    
        s1.erase(s1.begin());
        PrintfSet(s1);
    
        s1.erase(30);
        PrintfSet(s1);
    
        //s1.erase(s1.begin(),s1.end());
        s1.clear();
    
    }
    
    int main()
    {
        test();
        cout << "Hello World!" << endl;
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    在这里插入图片描述

    set查找和统计

    在这里插入图片描述

    #include 
    #include
    using namespace std;
    
    void PrintfSet(set&s)
    {
        for(set::iterator it = s.begin();it != s.end();it++)
        {
            cout<<*it<<" ";
        }
        cout< s1;
    
        //插入数据,只有insert方式
        s1.insert(10);
        s1.insert(40);
        s1.insert(20);
        s1.insert(40);
        s1.insert(30);
    
        //set容器特点: 所有元素插入时候自动被排序
        //set容器不允许插入重复值
        PrintfSet(s1);
    
        set::iterator pos = s1.find(30);
        if(pos != s1.end())
        {
            cout<<"have finded"<
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    在这里插入图片描述

    set与multise区别

    在这里插入图片描述

    #include 
    #include
    using namespace std;
    
    void PrintfSet(set&s)
    {
        for(set::iterator it = s.begin();it != s.end();it++)
        {
            cout<<*it<<" ";
        }
        cout< s1;
    
        //插入数据,只有insert方式
        pair::iterator,bool> ret = s1.insert(10);
        if(ret.second)
        {
            cout<<"insert success at first"<m1;
        //允许插入重复值
        m1.insert(10);
        m1.insert(10);
        m1.insert(10);
        m1.insert(10);
        for(multiset::iterator it = m1.begin();it != m1.end();it++)
        {
            cout<<*it<<" ";
        }
        cout<

在这里插入图片描述

pair对组的创建

在这里插入图片描述

#include 
#include
using namespace std;

void PrintfSet(set&s)
{
    for(set::iterator it = s.begin();it != s.end();it++)
    {
        cout<<*it<<" ";
    }
    cout<p("Tom",20);
    cout<<"name is "<p2 = make_pair("Jin",21);
    cout<<"name is "<

在这里插入图片描述

set排序

在这里插入图片描述

#include 
#include
using namespace std;

void PrintfSet(set&s)
{
    for(set::iterator it = s.begin();it != s.end();it++)
    {
        cout<<*it<<" ";
    }
    cout<v2;
    }
};

void test()
{
    sets1;
    s1.insert(10);
    s1.insert(40);
    s1.insert(30);
    s1.insert(50);
    s1.insert(20);
    PrintfSet(s1);

    //指定排序规则为从大到小
    sets2;

    s2.insert(10);
    s2.insert(40);
    s2.insert(30);
    s2.insert(50);
    s2.insert(20);

    for(set::iterator it = s2.begin();it != s2.end();it++)
    {
        cout<<*it<<" ";
    }
    cout<

在这里插入图片描述

set存放自定义数据

#include
#include
using namespace std;
#include
//set容器排序,存放自定义数据类型
class Person
{
public:
	Person(string name,int age)
	{
		this->m_name = name;
		this->m_age = age;
	}
	string m_name;
	int m_age;
};

class MyCompare
{
public:
	bool operator()(const Person&p1, const Person& p2)
	{
		//按照年龄进行降序
		return p1.m_age > p2.m_age;
	}
};

void test()
{
	//指定排序规则为从大到小
	sets;

	//创建Person对象
	Person p1 ("liubei",23);
	Person p2("zhangfei", 21);
	Person p3("guanyu", 22);
	Person p4("zhaoyun", 24);

	s.insert(p1);
	s.insert(p2);
	s.insert(p3);
	s.insert(p4);

	for (set::iterator it = s.begin();it != s.end();it++)
	{
		cout << "name is " << (*it).m_name << "age is " << (*it).m_age << endl;
	}
	cout << endl;
}

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

在这里插入图片描述

  • 相关阅读:
    电网变电站安全作业行为规范检测-绝缘手套佩戴检测图像数据集(VOC,YOLO两类标签,六类目标)
    MIT6.s081/6.828 lectrue1:Introduction and examples 以及 Lab1 心得
    健身房小程序开发|健身房小程序运营介绍
    从F5 BIG-IP RCE漏洞(CVE-2023-46747)来看请求走私的利用价值
    闭坑1:Django “TemplateDoesNotExist at /index/“解决/Django加载HTML出错
    go语言输出带颜色字体
    算法提升(一)二分法
    yolov5剪枝实战4: 正常训练和稀疏化训练
    进程的概念和分类
    基于JAVA旅行网的设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署
  • 原文地址:https://blog.csdn.net/qq_45159887/article/details/134471817