集合(Set)是一种包含已排序对象的关联容器。多元集合(MultiSets)和集合(Sets)相像,只不过支持重复对象,其用法与set基本相同。

 用法介绍

  1.insert()函数

  首先把头文件set包含进去 #include "set"

    set <int> test1;
set <int>::iterator it1;
multiset <int> test2;
multiset <int>::iterator it2;
//////////////////////////////////////////////////////////////////////////
//输入
it1 = test1.begin();
it2 = test2.begin();
for (int j=;j<=;j++)
{
test1.insert(it1,j);//直接在最后面插入数据
test2.insert(it2,j*);
}

  2、输出的话,可以直接取地址

    cout<<"Elements:";
for ( it1=test1.begin() ; it1 != test1.end(); it1++ )
cout << " " << *it1;//直接取地址
cout<<endl;

  3、find() and erase()查找元素和删除元素,需要注意的是当元素不存在是find会出错

    //查找和删除,当元素不存在是find会出错
it1 = test1.find();//查找某元素位置
test1.erase(it1);//删除元素
test1.erase(test1.find());//结合起来写 for ( it1=test1.begin() ; it1 != test1.end(); it1++ )
cout << " " << *it1;
cout<<endl;

  4、count() 函数,元素计数,set中可用于判断元素是否存在

    //count,计数,可用来判断元素是否存在,因为set中元素不允许重复
test2.insert();
cout<<"multiset的元素可以重复:"<<test2.count()<<endl;
for (int i=;i<; i++)
{
cout << i;
if (test1.count(i)>)//只能有一个元素
cout << " is an element of test1.\n";
else
cout << " is not an element of test1.\n";
}

  5、equal_range()函数  返回第一个>=关键字的迭代器和>关键字的迭代器 ,也就是你要查找的元素的指针和它下一个元素的指针。

    //equal_range()  返回第一个>=关键字的迭代器和>关键字的迭代器
pair<set<int>::iterator,set<int>::iterator> ret;//注意用法 pair
ret = test1.equal_range();//查找元素5的迭代器和它下一个迭代器,如果不存在,则这两个迭代器都指向是下一个元素
cout<<"lower bound points to:"<<*ret.first<<endl;
cout<<"upper bound points to:"<<*ret.second<<endl;//不能越界

  6、 lower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器 

    upper_bound()  返回大于某个值元素的迭代器 

这两个函数结合在一起,可用来修改或者删除某一个范围内的元素

    set <int>::iterator itlower,itupper;
itlower = test1.lower_bound();//指向大于等于5的迭代器
itupper = test1.upper_bound();//指向大于9的迭代器
test1.erase(itlower,itupper);//erase data from 5 to 10
cout<<"Element:";
for ( it1=test1.begin() ; it1 != test1.end(); it1++ )
cout << " " << *it1;
cout<<endl;

  7 swap   交换两个集合变量 中的所有元素

    //swap   交换两个集合变量 中的所有元素
set <int> test3;
set <int>::iterator it3;
it3 = test3.begin();
for (int j=;j<=;j++)
{
test3.insert(it3,j*);//直接在最后面插入数据 }
swap(test1,test3);

  8、empty(),clear() 清空数据

   test1.clear();
if (test1.empty())
{
cout<<"set is null"<<endl;
}

 

 set集合函数很简单,就这么多常用功能。更复杂的是在使用很灵活

STL学习笔记4--set and multiset的更多相关文章

  1. 【stl学习笔记】set、multiset

    set和multiset会根据特定的排序准则,自动将元素排序.两者不同处在于multiset允许元素重复而set不允许 在使用set或multiset之前,必须先加入头文件<set> se ...

  2. C++STL标准库学习笔记(三)multiset

    C++STL标准库学习笔记(三)multiset STL中的平衡二叉树数据结构 前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标 ...

  3. Effective STL 学习笔记: Item 22 ~ 24

    Effective STL 学习笔记: Item 22 ~ 24 */--> div.org-src-container { font-size: 85%; font-family: monos ...

  4. Effective STL 学习笔记 Item 21:Comparison Function 相关

    Effective STL 学习笔记 Item 21:Comparison Function 相关 */--> div.org-src-container { font-size: 85%; f ...

  5. Effective STL 学习笔记 39 ~ 41

    Effective STL 学习笔记 39 ~ 41 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  6. Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value

    Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value */--> div.org-src-container ...

  7. Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据

    Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据 */--> div.org-src-container { font-size: 85%; font-fam ...

  8. Effective STL 学习笔记 32 ~ 33

    Effective STL 学习笔记 32 ~ 33 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  9. Effective STL 学习笔记 31:排序算法

    Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  10. Effective STL 学习笔记 Item 30: 保证目标区间足够大

    Effective STL 学习笔记 Item 30: 保证目标区间足够大 */--> div.org-src-container { font-size: 85%; font-family: ...

随机推荐

  1. Git 团队常用命令操作指南

    命令如下: git clone -b <branch name> [remote repository address] 主要就是在clone的时候,后面添加branch的信息. 报错: ...

  2. 【来龙去脉系列】QRCode二维码的生成细节和原理

    二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字, ...

  3. JS随机生成100个DIV每10个换行(换色,生成V字和倒V)

    附图 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...

  4. 基于jeesit下的工作流开发步骤

    首先jeesit是开源的OA系统,采用的框架是springMVC和mybatis,采用shiro安全验证. 1.新建流程所属表: 在数据库新建所需工作流的表之后,登录jeesit系统,在“代码生成”- ...

  5. 本人常用的Phpstorm快捷键

    我设置的是eclipse的按键风格(按键习惯),不是phpstorm的风格 1.添加TODO(这个不是快捷键)://TODO 后面是说明,换行写实现代码 2.选择相同单词做一次性修改:Alt+J+鼠标 ...

  6. matplotlib学习之(四)设置线条颜色、形状

    本文是学习<matplotlib for python developers>的一点笔记plot画图时可以设定线条参数.包括:颜色.线型.标记风格.1)控制颜色颜色之间的对应关系为b--- ...

  7. 小记:vue 及 react 的工程项目入口小结及 webpack 配置多页面应用参考

    一.前言 闲暇时间,看了下前端的基础知识,有幸参与了公司公众号项目前面的一个阶段,学习到了一些前端框架的相关知识 小结了一下 自己练习通过新建一个个文件组织起项目的过程中的一些理解 二.项目入口 vu ...

  8. ShopNC B2B2C多用户商城网站系统源码

    直接正常安装就行哦 注意有服务器的安装可以更下安装时间的长度 也就是说进行跳转的 如果时间太少 这样会安装不成 数据导入不完成 所以就会安装不成功安装好后打开data\config\config.in ...

  9. Java jvm 内存回收机制

    http://blog.csdn.net/yaerfeng/article/details/51291903 在Java中,它的内存管理包括两方面:内存分配(创建Java对象的时候)和内存回收,这两方 ...

  10. 待解决问题:c++栈对象的析构、虚拟内存与内存管理的关系、内存管理的解决方案。

    待解决问题:c++栈对象的析构.虚拟内存与内存管理的关系.内存管理的解决方案.