博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL 关联容器之集合和多重集合
阅读量:6327 次
发布时间:2019-06-22

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

头文件:

#include <set>

集合和多重集合的唯一区别:多重集合可以包含重复元素,集合不可以包含重复元素。

构造方法

  1. ctType<type> ct                                       创建空集合 <
  2. ctType<type,sort> ct                               创建自定义排序方式的空集合
  3. ctType<type> ct(otherCt)                       用另外的集合 创建集合 <
  4. ctType<type,sort> ct(otherCt)               用另外的集合创建自定义排序方式的集合
  5. ctType<type> ct(beg,end)                     用另外的集合 创建集合 < ,从beg 到end + 1
  6. ctType<type,sort> ct(beg,end)             用另外的集合创建自定义排序方式的集合,从beg 到end + 1

示例:

set
intSet; set
> otherIntSet; multiset
stringMultiSet; multiset
> otherStringMultiset;

操作:

  1. ct.insert(elem)                                     插入元素,返回是否成功
  2. ct.insert(pos,elem)                             从某个位置开始搜索插入,返回插入的位置
  3. ct.insert(beg,end)                               将beg到end-1的所有元素插入到ct中
  4. ct.erase(elem)                                    删除元素,返回删除的个数
  5. ct.erase(pos)                                      删除指定位置上的元素,不返回任何值
  6. ct.erase(beg,end)                              删除一段位置的值,不返回任何值
  7. ct.clear()                                              清空集合

示例代码:

#include 
#include
#include
#include
#include
#include
using namespace std;int main() { set
intSet; // 集合 升序 set
> intSetA;// 集合 降序 set
>::iterator intSetAIt;// 迭代器 ostream_iterator
screen(cout," ");// 输出迭代器 // intSet 添加元素 intSet.insert(16); intSet.insert(8); intSet.insert(20); intSet.insert(3); cout << "intSet :" << endl; copy(intSet.begin(),intSet.end(),screen); cout<< endl; // intSetA 添加元素 intSetA.insert(36); intSetA.insert(84); intSetA.insert(30); intSetA.insert(39); intSetA.insert(59); intSetA.insert(238); intSetA.insert(156); intSetA.insert(156); //重复插入 cout << "intSetA :" << endl; copy(intSetA.begin(),intSetA.end(),screen); cout << endl; // 擦除元素 intSetAIt = intSetA.begin(); ++intSetAIt; ++intSetAIt; ++intSetAIt; intSetA.erase(intSetAIt); cout << "intSetA.erase:" << endl; copy(intSetA.begin(),intSetA.end(),screen); cout << endl; set
>intSetB(intSetA); cout << "intSetB :" << endl; copy(intSetB.begin(),intSetB.end(),screen); cout << endl; intSetB.clear(); cout << "intSetB.clear :" << endl; copy(intSetB.begin(),intSetB.end(),screen); cout << endl; // 定义多重集合 multiset
> namesMultiSet; multiset
>::iterator iter; ostream_iterator
pScreen(cout," "); namesMultiSet.insert("Donny"); namesMultiSet.insert("Zippy"); namesMultiSet.insert("Goofy"); namesMultiSet.insert("Hungry"); namesMultiSet.insert("Goofy"); namesMultiSet.insert("Donny"); cout << "namesMultiSet:" << endl; copy(namesMultiSet.begin(),namesMultiSet.end(),pScreen); cout <
运行结果:

intSet :

3 8 16 20
intSetA :
238 156 84 59 39 36 30
intSetA.erase:
238 156 84 39 36 30
intSetB :
238 156 84 39 36 30
intSetB.clear :
namesMultiSet:
Zippy Hungry Goofy Goofy Donny Donny

转载于:https://www.cnblogs.com/wjchang/p/3671649.html

你可能感兴趣的文章
加强型的记录集权限(数据集权限、约束表达式设置功能)实现方法界面参考...
查看>>
Linux 内存机制
查看>>
linux下定时任务
查看>>
SharePoint 2013 部署 Part 1
查看>>
DWGSee看图纸dwg文件阅读器免费下载地址
查看>>
grep
查看>>
我的友情链接
查看>>
单例模式学习
查看>>
解决httpd: Could not reliably determine the server's fully qualified domain name
查看>>
名词学习
查看>>
centos7安装部署keepalived
查看>>
Citrx XenDesktop 7 实施九 创建交付组,策略.测试.(完结)
查看>>
存储过程实例
查看>>
[20180819]关于父子游标问题(11g).txt
查看>>
经纬度正则表达式
查看>>
Nutch成功添加中文分词
查看>>
spring bean中的properties元素内的ref和value的区别;* 和 ** 的区别
查看>>
ibernate报错 :all_sequences' doesn't exist.
查看>>
BZOJ2223/3524:[POI2014] Couriers(主席树)
查看>>
Windows 性能监视器的基本指标(CPU,内存,硬盘参数)
查看>>