STL学习笔记4--set and multiset
集合(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的更多相关文章
- 【stl学习笔记】set、multiset
set和multiset会根据特定的排序准则,自动将元素排序.两者不同处在于multiset允许元素重复而set不允许 在使用set或multiset之前,必须先加入头文件<set> se ...
- C++STL标准库学习笔记(三)multiset
C++STL标准库学习笔记(三)multiset STL中的平衡二叉树数据结构 前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标 ...
- Effective STL 学习笔记: Item 22 ~ 24
Effective STL 学习笔记: Item 22 ~ 24 */--> div.org-src-container { font-size: 85%; font-family: monos ...
- Effective STL 学习笔记 Item 21:Comparison Function 相关
Effective STL 学习笔记 Item 21:Comparison Function 相关 */--> div.org-src-container { font-size: 85%; f ...
- Effective STL 学习笔记 39 ~ 41
Effective STL 学习笔记 39 ~ 41 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- 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 ...
- Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据
Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据 */--> div.org-src-container { font-size: 85%; font-fam ...
- Effective STL 学习笔记 32 ~ 33
Effective STL 学习笔记 32 ~ 33 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记 31:排序算法
Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记 Item 30: 保证目标区间足够大
Effective STL 学习笔记 Item 30: 保证目标区间足够大 */--> div.org-src-container { font-size: 85%; font-family: ...
随机推荐
- 一位学长的学习建议(java方向)
1.前台总得有个拿的出手的页面能力吧,ajax,jquery不说精通但是至少能看懂,能根据业务需求来改吧. 2.数据库方面至少得玩过mysql,DB2,Oracle中的两个以上吧.hibernate或 ...
- linux中BASH_SOURCE[0](转)
转自:http://www.cnblogs.com/sunfie/p/5943979.html 在C/C++中,__FUNCTION__常量记录当前函数的名称.有时候,在日志输出的时候包含这些信息是非 ...
- 在 Visual Studio 或 SQLServer Management Studio 的代码编辑器中使用正则表达式匹配日期格式
使用正则查找时间格式文本 VS正则: (:z表示数字) ':z-:z-:z :z[\:]:z[\:]:z'
- IOS AppDelegate常用方法
// 当应用程序启动完毕的时候就会调用(系统自动调用) - (BOOL)application:(UIApplication *)application didFinishLaunchingWithO ...
- Handling Exceptions
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Exceptions/Tasks/Handling ...
- PHP 的那些错误总结
问题1: [root@web01 data]# lsof -i :9000 [root@web01 data]# /application/php/sbin/php-fpm /application ...
- 修改android studio中的avd sdk路径、avd sdk找不到的解决方案
要进行Android应用程序的开发,首先就要搭建好Android的开发环境,所需要的工具有如下4个:1.java JDK:2.Android SDK:3.Eclipse:4.ADT 1.java JD ...
- final关键字,static关键字
Final final的意思为最终,不可变.final是个修饰符,它可以用来修饰类,类的成员,以及局部变量.不能修饰构造方法. 注意: 被final修饰的类不能被继承但可以继承别的类 class Yy ...
- 重置 nexus3 admin 密码
2 简单 3 重构,变化很大 如何处理nexus3忘记admin密码 - CSDN博客 https://blog.csdn.net/tianya6607/article/details/5330562 ...
- Linux时区修改
Linux修改时区的正确方法 CentOS和Ubuntu的时区文件是/etc/localtime,但是在CentOS7以后localtime以及变成了一个链接文件 [root@centos7 ~]# ...