博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ set容器-56-集合容器大小/交换/插入/删除操作
阅读量:4301 次
发布时间:2019-05-27

本文共 2666 字,大约阅读时间需要 8 分钟。

这篇学习set容器的大小操作,大小主要有判断是否为空,size()还有交换swap(),最后来学习下set容器的插入和删除操作。基本上那些常用的API,前面都学习过。

 

1.set容器大小操作和交换

函数原型

注意这里set容器没有resize(),重新指定容器大小的操作。

#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); // 判断是否为空 cout << "is Empty?" << st.empty() << endl; // 返回set容器的大小 cout << "size: " << st.size() << endl; // 容器交换 set
st1; // 插入元素 st1.insert(200); st1.insert(300); cout << "before swap " << endl; printSet(st); printSet(st1); cout << "after swap " << endl; st1.swap(st); printSet(st); printSet(st1);}int main(){ test01(); system("pause"); return 0;}

运行结果

 

2.set容器的插入操作

 set容器插入比较特殊,没有前面提供哪些push_back,只有一个insert(ele),而且不能指定插入位置,参数就是一个元素,由于set容器会自动排序,所以插入的api就一个insert(ele),这个插入的方法,上面代码也使用到了,就不再练习。

 

直接来看删除相关

函数原型

接下来用代码来练习一下几个删除的方法

#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); // 根据迭代器位置删除元素 st.erase(st.begin()); printSet(st); // 根据元素删除 st.erase(50); printSet(st); // 清空容器 st.clear(); cout << "is Empty? " << st.empty() << endl;}int main(){ test01(); system("pause"); return 0;}

运行结果

 

3.set容器的查找和统计

查找元素是否存在和统计元素的个数

函数原型

注意,find()函数的返回值是一个迭代器,也就是调用这个函数,是通过迭代器一个一个去帮你查找,如果查找到就返回迭代器的位置,如果找不到就返回迭代器最后查找的位置,也就是迭代器查找到最后还是没有找到元素。统计函数count()的结果无非就是0和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); printSet(st); // 查找元素 set
::iterator pos = st.find(30); if(pos != st.end()) { cout << "had find " << endl; } else { cout << "not find " << endl; } // 统计 int cot = st.count(30); cout << "the count of element 30 is " << cot << endl; }int main(){ test01(); system("pause"); return 0;}

运行结果

 

 

 

转载地址:http://pexws.baihongyu.com/

你可能感兴趣的文章
GPU、GPU驱动、OpenGL、游戏引擎之间的关系
查看>>
C#中使用tao.opengl绘制三维模型
查看>>
OpenGL-坐标系概念
查看>>
C# 中类对象与JSON字符串互相转换的几种方法
查看>>
Mysql安装命令
查看>>
Mysql数据库常用指令
查看>>
Mysql安装问题汇总
查看>>
Mysql安装和常用命令及问题汇总
查看>>
C# winform 禁用最小化和还原按钮(消息循环截获处理)
查看>>
c#中将HTML文件转换成PDF文件
查看>>
Window捕获消息机制及动态创建button-MFC
查看>>
MFC中动态创建控件及添加消息响应的方法实例
查看>>
Windows消息ID号查看
查看>>
MFC中模拟按钮控件BN_CLICKED消息事件
查看>>
MFC和c#中模拟对另一进程的窗口按钮点击
查看>>
C#中进程间通信方式汇总
查看>>
c#中mysql远程连接方法及实例
查看>>
mysql中数据库覆盖导入的几种方式
查看>>
mysql并发写入性能分析
查看>>
c#中的DefWndProc是Control类的虚函数
查看>>