set集合

#include<iostream>
#include<set>
#include<string>
#include<algorithm>
#include<functional>//仿函数
//set是一个集合,变量内容是唯一的,其中值的顺序是按照规则排列的
//在插入的时候要删除,要删除原有数据在插入。不支持直接存取操作,不能指定插入位置
using namespace std;
int testSet01()
{set<int>setA;setA.insert(1); setA.insert(3); setA.insert(5); setA.insert(7);//不能指定位置插入set<int, less<int>>setA;//仿函数实现机制,重载了()操作符号的普通类对象//1拷贝构造与赋值//set(const set &st)   set&operator=(const set &st)  set.swap(st)set<int>setB;setB.insert(2); setB.insert(4); setB.insert(6); setB.insert(8);set<int>setC(setB);set<int>setD;setD = setA;//2.set.size()    set.empty()  判断集合为空 和集合的大小//3.set的删除操作setD.clear();//清空所有的元素//setD.erase(pos);  删除迭代器指向的那个元素//setD.erase(elem);删除集合中的元素为elem的元素//setD.erase(begin,end);删除迭代器所指向的区间中的元素,然后返回下一个位置的迭代器//4set的查找setA.find(3);//查找值为3的元素,返回迭代器setA.count(3);//数值为3的元素的个数,在SET中要么为0要么为1/*set.find(elem);   //查找elem元素,返回指向elem元素的迭代器。set.count(elem);   //返回容器中值为elem的元素个数。对set来说,要么是0,要么是1。对multiset来说,值可能大于1。set.lower_bound(elem);//返回第一个>=elem元素的迭代器。set.upper_bound(elem);//返回第一个>elem元素的迭代器。这两个都是边界那么只是区分=号的问题set.equal_range(elem);//返回容器中与elem相等的上下限的两个迭代器。上限是闭区间,下限是开区间,如[beg,end)。以上函数返回两个迭代器,而这两个迭代器被封装在pair中。 set<int> setInt;setInt.insert(3);setInt.insert(1);setInt.insert(7);setInt.insert(5);//pair也是一个模版,带参数的对象setInt.insert(9);set<int>::iterator itA = setInt.find(5);int iA = *itA; //iA == 5int iCount = setInt.count(5); //iCount == 1set<int>::iterator itB = setInt.lower_bound(5);set<int>::iterator itC = setInt.upper_bound(5);int iB = *itB; //iB == 5int iC = *itC; //iC == 7//一组迭代器,有些时候删除是不能直接删除的,要先遍历操作,找到它的迭代器,然后使用迭代器删除pair< set<int>::iterator, set<int>::iterator > pairIt = setInt.equal_range(5);  //pair是什么?*///pair是一个对象,对象中的first   和   second  是指针分别指向不同的位置的迭代器for (auto c : setA)cout << c << " ";system("pause");return 0;
}
//仿函数实现
class CStudent
{public:CStudent(int ID, string name){this->ID = ID;this->name = name;}
public:string name;int ID;
};
struct StuFunctor
{bool operator()(const CStudent&stu1, const CStudent&stu2) {return (stu1.ID < stu2.ID);}
};
int testSet02()
{set<CStudent, StuFunctor>setStu;//这里好比一个函数指针,代表函数入口地址setStu.insert(CStudent(2, "小张"));setStu.insert(CStudent(1, "小李"));setStu.insert(CStudent(5, "小王"));setStu.insert(CStudent(4, "小刘"));//multiset与上面的操作类似return 0;
}int main(){testSet01();testSet02();return 0;
}

STL标准模版库---set操作相关推荐

  1. STL(标准模板库)理论基础与容器

    10.1 STL(标准模板库)理论基础 10.1.1基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被 ...

  2. 【跟学C++】C++STL标准模板库——算法详细整理(中)(Study18)

    文章目录 1.简介 2.STL算法分类及常用函数 2.1.变序算法(一) 2.2.1 初始化算法(2个) 2.2.2 修改算法(2个) 2.2.3 复制算法(6个) 2.2.4 删除算法(6个) 3. ...

  3. STL 标准模板库—容器部分【C++】

    STL标准模板库 包含内容: 容器类:vector.list.deque.set.map等 迭代器:"泛型指针",每个容器都有自己的迭代器,[vector和deque的迭代器是随机 ...

  4. 信息学奥赛中的STL(标准模板库)--2022.09.30

    1.信息学奥赛一本通 第5版 第8章 C++实用技巧与模版库(6节) 第一节  排序算法 第二节 运算符重载 第三节  字符串(string) 第四节 FIFO队列和优先队列 第五节  动态数组 第六 ...

  5. C++ STL 标准模板库介绍与入门

    目录 1.概述 1.1.C++ 标准库 1.2.Boost库 2.STL 版本 2.1.HP 原始版本 2.2.P. J. 实现版本 2.3.RW 实现版本 2.4.SGI 实现版本 2.5.STLp ...

  6. C++入门到精通 ——第七章 STL标准模板库大局观

    七.STL标准模板库大局观 Author: XFFer_ 先分享一本 <C++ 标准库 第二版> ,望在STL的道路上从入门到放弃!(开玩笑的啦,愈行愈远~) 链接: https://pa ...

  7. C++提高编程----STL标准模板库-常用容器

    STL标准模板库(Standard Template Library)-常用容器 C++的,面向对象和泛型编程,目的就是提高代码的复用性:为了建立数据结构和算法的统一标准,诞生了STL 一.STL初识 ...

  8. 补8-5日复习内容 STL 标准模板库的容器

    //有关 STL 标准模板库的函数 /* string 的 */ /* #include <iostream> #include <string> #include <w ...

  9. stl标准模板库_C ++标准模板库(STL)中的array :: fill()

    stl标准模板库 fill() is a member function of "array container", which sets a given value to all ...

  10. stl标准模板库_C ++标准模板库(STL)中的数组及其常用功能

    stl标准模板库 "array" is a container in C++ STL, which has fixed size, which is defined in &quo ...

最新文章

  1. [转载] 七龙珠第一部——第079话 金角跟银角
  2. JSP 开发环境搭建概述
  3. python计算向量夹角代码
  4. 提前(qian)庆祝 “1024程序员节” ,价值 1500 元的京东卡免费送!
  5. 计算机用并行传输还是串行,网线RJ45是并行传输还是串行
  6. Apache实验-目录别名
  7. centos7安装VLC播放器
  8. Python 面向对象(二)
  9. java版欧朋浏览器_Opera欧朋浏览器_Opera欧朋浏览器下载[2020官方最新版]Opera欧朋浏览器安全下载_ 极速下载...
  10. MM32看门狗学习(兼容STM32)
  11. JavaScript 一维数组、二维数组(某个属性)去重方法
  12. 各式标签二维码明确采用QR码或DM码,其两种不同码制的区别表现
  13. android 测试手机屏幕,如何才能知道自己手机屏幕质量如何 安卓手机专业测屏神器体验...
  14. 怎样在电脑中添加pdf打印机 添加pdf打印机的方法
  15. 实现简单的英文字母大小写转换
  16. 玩转英伟达jetson系列(一)刷系统
  17. php发邮件附件,PHP使用PHPMailer发送邮件和附件的方法
  18. 《编译原理-龙书》练习第2章
  19. ROUGE 简易安装教程
  20. Qt图片绘图类QPixmap、QImage、QPicture

热门文章

  1. Java — InputStream.read(),response.getOutputStream(),OutputStream().write【IO流】
  2. Linux内核使用的字符串转整形数和16进制数
  3. Linux给驱动模块传参数(module_param()用法)
  4. nginx详解反向代理,负载均衡,LNMP架构上线动态网站
  5. matlab读取excel里的数据并用imagesc画图
  6. Codevs 1684 垃圾陷阱
  7. Linux学习之/etc/init.d/functions详解
  8. PL/SQL 调用JAVA使用UDP发送数据
  9. java 自定义异常处理
  10. Shell脚本 条件