关于set容器板

map以键-值対的形式组织,键的作用在于索引,而值表示所存储和读取数据。
set仅包含一个键,并且有效的支持某个键是否存在的查询。
他们都是基于标准型类库pair实现,该类型在utility头文件中。
一:关于pair类型的操作
pair&T1,T2& p1; //创建一个空pair类型
pair&T1,T2& p1(v1,v2); //创建并初始化
make_pair(v1,v2) //生成pair对象
&,&,==,!= &//类型之间比较,遵循字典序,先比较first后second
p.first() //返回first成员,
p.second() //返回second成员
同时还支持一些容器的基本操作
#include &vector&
#include &cstdio&
#include &cstring&
#include &algorithm&
#include &stack&
#include &utility&
#include &string&
#include &map&
#include &iostream&
int main()
pair&int,int&
p = make_pair(1,2) ;
pair&int,string& p1(1,&sttttaa&);
pair&string,vector&int& &
cout&&p1.first&&& &&&p1.second&&
while(cin&&x&&y)
p1=make_pair(x,y);
二:map容器及set容器
<span style="font-family:KaiTi_GB2312; font-size:14 color:#:构造函数及其定义的类型
map&k,v& 定义空的map
map&k,v& m(m2); 定义map初始化为m的副本
map&k,v& m(b,e); 定义map初始化为一个迭代器b到e的副本
map&k,v&::key_ 键的类型
map&k,v&::mapped_ &#20540;的类型
map&k,v&::value_ 一个pair类型
<span style="font-family:KaiTi_GB2312; font-size:14 color:#:常用操作
支持insert的三种常用插入元素,先查找,不在的话插入
支持直接下标操作元素
m.count(v); 返回键v在m中的&#20540;的个数
m.find(v); 返回一个迭代器,如果存在返回位置,否则指向尾
支持erase三种常用删除操作
支持容器常用遍历
#include &cstdio&
#include &cstring&
#include &algorithm&
#include &iostream&
#include &map&
#include &cmath&
#include &map&
#include &utility&
#include &set&
#define Del(a,b) memset(a,b,sizeof(a))
int main()
map&string,int&
m[&yangdangl&]=5;//插入
m.insert(map&string,int&::value_type(&Ann&,1));
m[&jame&]=6,m[&wade&]=3;
pair&string,int& p(&james&,6);
string s=&dasds&;int t=200;
p = make_pair(s,t);
map&string,int&::
for(it=m.begin();it!=m.end();it++) //遍历
cout&&it-&first&&& &&&it-&second&&
cout&&m.count(&jame&)&&
it=m.find(&yangdnagl&);
if(it!=m.end())
cout&&it-&second&&
m.erase(&wade&);m.erase(m.begin());
for(it=m.begin();it!=m.end();it++) //遍历
cout&&it-&first&&& &&&it-&second&&
m.erase(m.begin(),m.end());
m.clear();
三:multimap和multiset
多重映射容器,即一个键可以对应多个&#20540;
其支持map和set的大多数操作,但是都不支持下标操作。
由于multimap中可能存在一个键对应多个&#20540;,而这多个&#20540;是相邻存放的,那么我们查找的时候可能需要查找到一个范围,这里介绍三个函数。
m.lower_bound(k); 返回一个迭代器,指向不小于的第一个元素
m.upper_bound(k); 返回一个迭代器,指向大于k的第一个元素
m.equal_range(); 返回一个pair类型,第一个&#20540;为lower_bound()结果,第二个为upper_bound()结果。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:157666次
积分:4319
积分:4319
排名:第2570名
原创:276篇
评论:68条
(2)(8)(19)(42)(24)(37)(21)(1)(6)(17)(21)(10)(6)(1)(5)(6)(19)(3)(3)(5)(8)(2)(14)(2)扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
标准模板库(STL)学习探究之Set容器
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口|||||| 更多
比特客户端
我们也在这里:
Java程序容器类List和Set详细分析
关键字:Java
  容器类可以大大提高编程效率和编程能力,在Java2中,所有的容器都由公司的Joshua Bloch进行了重新设计,丰富了容器类库的功能。
  Java2容器类类库的用途是"保存对象",它分为两类:
  Collection----一组独立的元素,通常这些元素都服从某种规则。必须保持元素特定的顺序,而Set不能有重复元素。
  Map----一组成对的"键值对"对象,即其元素是成对的对象,最典型的应用就是数据字典,并且还有其它广泛的应用。另外,Map可以返回其所有键组成的Set和其所有值组成的Collection,或其键值对组成的Set,并且还可以像数组一样扩展多维Map,只要让Map中键值对的每个"值"是一个Map即可。
  1.迭代器
  迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为"轻量级"对象,因为创建它的代价小。
  Java中的Iterator功能比较简单,并且只能单向移动:
  (1) 使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元素。
  (2) 使用next()获得序列中的下一个元素。
  (3) 使用hasNext()检查序列中是否还有元素。
  (4) 使用remove()将迭代器新返回的元素删除。
  Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
  2.List的功能方法
  List(interface): 次序是List最重要的特点;它确保维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(只推荐LinkedList使用)。一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和删除元素。
  ArrayList: 由数组实现的List.它允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和删除元素,因为这比LinkedList开销要大很多。
  LinkedList: 对顺序访问进行了优化,向List中间插入与删除得开销不大,随机访问则相对较慢(可用ArrayList代替)。它具有方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast(),这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。
  3.Set的功能方法
  Set(interface): 存入Set的每个元素必须是唯一的,因为Set不保存重复元素。加入Set的Object必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。
  HashSet: 为快速查找而设计的Set.存入HashSet的对象必须定义hashCode()。
  TreeSet: 保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。
  LinkedHashSet: 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。
  HashSet采用散列函数对元素进行排序,这是专门为快速查询而设计的;TreeSet采用红黑树的数据结构进行排序元素;LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素的次序,使得看起来元素是以插入的顺序保存的。需要注意的是,生成自己的类时,Set需要维护元素的顺序,因此要实现Comparable接口并定义compareTo()方法。
相关文章:
[ 责任编辑:之极 ] &&&&
软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。
微信扫一扫
关注Chinabyte当前位置:
>Java容器类List和Set分析
欢迎进入Java社区论坛,与200万技术人员互动交流>>进入容器类可以大大提高编程效率和编程能力,在Java2中,所有的容器都由SUN公司的JoshuaBloch进行了重新设计,丰富了容器类库的功能。Java2容器类类库的用途是"保存对象",它分为两类:Collection----一组独立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set不能有重复元素。Map----一组成对的"键值对"对象,即其元素是成对的对象,最典型的应用就是数据字典,并且还有其它广泛的应用。另外,Map可以返回其所有键组成的Set和其所有值组成的Collection,或其键值对组成的Set,并且还可以像数组一样扩展多维Map,只要让Map中键值对的每个"值"是一个Map即可。1.迭代器迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为"轻量级"对象,因为创建它的代价小。Java中的Iterator功能比较简单,并且只能单向移动:(1)使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元素。(2)使用next()获得序列中的下一个元素。(3)使用hasNext()检查序列中是否还有元素。(4)使用remove()将迭代器新返回的元素删除。Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。2.List的功能方法List(interface):次序是List最重要的特点;它确保维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(只推荐LinkedList使用)。一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和删除元素。ArrayList:由数组实现的List.它允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和删除元素,因为这比LinkedList开销要大很多。LinkedList:对顺序访问进行了优化,向List中间插入与删除得开销不大,随机访问则相对较慢(可用ArrayList代替)。它具有方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast(),这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。3.Set的功能方法Set(interface):存入Set的每个元素必须是唯一的,因为Set不保存重复元素。加入Set的Object必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。HashSet:为快速查找而设计的Set.存入HashSet的对象必须定义hashCode()。TreeSet:保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。HashSet采用散列函数对元素进行排序,这是专门为快速查询而设计的;TreeSet采用红黑树的数据结构进行排序元素;LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素的次序,使得看起来元素是以插入的顺序保存的。需要注意的是,生成自己的类时,Set需要维护元素的存储顺序,因此要实现Comparable接口并定义compareTo()方法。欢迎进入Java社区论坛,与200万技术人员互动交流>>进入容器类可以大大提高编程效率和编程能力,在Java2中,所有的容器都由SUN公司的JoshuaBloch进行了重新设计,丰富了容器类库的功能。Java2容器类类库的用途是"保存对象",它分为两类:Collection----一组独立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set不能有重复元素。Map----一组成对的"键值对"对象,即其元素是成对的对象,最典型的应用就是数据字典,并且还有其它广泛的应用。另外,Map可以返回其所有键组成的Set和其所有值组成的Collection,或其键值对组成的Set,并且还可以像数组一样扩展多维Map,只要让Map中键值对的每个"值"是一个Map即可。1.迭代器迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为"轻量级"对象,因为创建它的代价小。Java中的Iterator功能比较简单,并且只能单向移动:(1)使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元素。(2)使用next()获得序列中的下一个元素。(3)使用hasNext()检查序列中是否还有元素。(4)使用remove()将迭代器新返回的元素删除。Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。2.List的功能方法List(interface):次序是List最重要的特点;它确保维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(只推荐LinkedList使用)。一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和删除元素。ArrayList:由数组实现的List.它允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和删除元素,因为这比LinkedList开销要大很多。LinkedList:对顺序访问进行了优化,向List中间插入与删除得开销不大,随机访问则相对较慢(可用ArrayList代替)。它具有方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast(),这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。3.Set的功能方法Set(interface):存入Set的每个元素必须是唯一的,因为Set不保存重复元素。加入Set的Object必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。HashSet:为快速查找而设计的Set.存入HashSet的对象必须定义hashCode()。TreeSet:保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。HashSet采用散列函数对元素进行排序,这是专门为快速查询而设计的;TreeSet采用红黑树的数据结构进行排序元素;LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素的次序,使得看起来元素是以插入的顺序保存的。需要注意的是,生成自己的类时,Set需要维护元素的存储顺序,因此要实现Comparable接口并定义compareTo()方法。
友情链接:}

我要回帖

更多关于 压力容器分类 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信