我是靠谱客的博主 儒雅花瓣,最近开发中收集的这篇文章主要介绍C++中set容器的基本使用----在B站听黑马程序员c++课程的记录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

setmultiset容器

    • 概念
    • 构造和赋值
    • 大小和交换
    • 插入和删除
    • 查找和统计
    • 排序
    • pair队组

概念

  • 集合,插入数据的同时自动排好顺序,也叫关联容器。底层结构是二叉树实现。
  • set和multiset区别:
    set不允许容器中有重复的元素。set插入数据的同时会返回插入结果ret=s.insert(10);,ret是一个pair队组,第一个值表示插入的迭代器,第二个值是bool类型表示插入是否成功ret.second
    multisetmultiset不会检测数据,只返回迭代器不判断,因此允许容器中有重复的元素。

构造和赋值

  • 构造:
    set<T> st; //默认构造函数:set<int>s3;
    set(const set &st); //拷贝构造函数set<int>s2(s1);
  • 赋值:
    set& operator=(const set &st); //重载等号操作符s3 = s2;
  • 插入数据:
    s1.insert(10);
  • 遍历:
    使用迭代器
    for (set<int>::iterator it = s.begin(); it != s.end(); it++){
    		cout << *it << " ";
    }
    

大小和交换

无法重新指定大小
size(); //返回容器中元素的数目
empty(); //判断容器是否为空
swap(st); //交换两个集合容器

插入和删除

insert(elem); //在容器中插入元素。
clear(); //清除所有元素
erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。
erase(beg, end); //删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
erase(elem); //删除容器中值为elem的元素。

查找和统计

find(key); //查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();
count(key); //统计key的元素个数,set不允许重复,结果只能为0或1

排序

set容器在插入时默认排序规则为从小到大,利用仿函数可改变排序规则。插入时就改变。

  1. set容器存放的是自定义的数据类型
    class MyCompare {
    public:
    	bool operator()(int v1, int v2) {
    		return v1 > v2;
    	}
    };
    //定义时,第二个参数类型为仿函数类型。
    set<int,MyCompare> s2;
    s2.insert(10);
    //在迭代的时候类型也需要变为
    for (set<int>::iterator it = s1.begin(); it != s1.end(); it++) {
    }
    
  2. set存放自定义数据类型
    class comparePerson{
    public:
    	bool operator()(const Person& p1, const Person &p2){
    		//按照年龄进行排序  降序
    		return p1.m_Age > p2.m_Age;
    	}
    };
    //其他一样 Person是自定义的类型
    set<Person, comparePerson> s;
    for (set<Person, comparePerson>::iterator it = s.begin(); it != s.end(); it++){
    }
    

pair队组

  • pair队组可以用来描述成对出现的数据,利用对组可以返回两个数据
  • 创建
    pair<type, type> p ( value1, value2 ); //默认构造 value1 value2赋初值
    pair<type, type> p = make_pair( value1, value2 );
  • 访问p.firstp.second

最后

以上就是儒雅花瓣为你收集整理的C++中set容器的基本使用----在B站听黑马程序员c++课程的记录的全部内容,希望文章能够帮你解决C++中set容器的基本使用----在B站听黑马程序员c++课程的记录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部