达内等多个文件中的set容器_第1页
达内等多个文件中的set容器_第2页
达内等多个文件中的set容器_第3页
达内等多个文件中的set容器_第4页
达内等多个文件中的set容器_第5页
已阅读5页,还剩26页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+ set 容器内容提要:在标准模板库(STL)中提供了很多的容器,它们是对象的对象。本文主要介绍 setbeginsetclearsetcountsetemptyC+ set 容器内容提要:在标准模板库(STL)中提供了很多的容器,它们是对象的对象。本文主要介绍 setbeginsetclearsetcountsetemptysetend 等 26 种函数。本容器是以模板的形式设计的,能应用于广泛的数据类型。关键字:begin、clear、count 、empty、end、find、引言:set是一个容器,它用于数据并且能从一个数据集合中取出数据。它的每个元素的值必须惟一,而且系统会根据该

2、值来自动将数据排序。每个元素的值不能直接被改变。正文:1set 容器set 容器简介:set是一个容器,它用于数据并且能从一个数据集合中取出数据。它的每个元素的值必须惟一,而且系统会根据该值来自动将数据排序。每个元素的值不能直接被改变。需加载的头文件:using namespa模板原型: template 说明:1 set 的参数说明。表set 的参数说set 容器有以下的特点:(1)它是一个相关联的容器,它的大小可以改变,它能根据关键字值来提高数据的能力。(2)它提供一个双向的来读写取数据。它已经根据关键字和一个比较函数来排好序。它的每一个元素的关键字是惟一的,因此每一个值至多与一个元素对应

3、。它是一个简单的容器,因为它的元素的值就是它的关键字。它是一个模板类,因为它提供一个一般且具有独立性的容器。成员变量:set 的成员变量说明如表 2 所示。表set 的成员变量说成员变量功能说明Allocator 对象分配器提供一个双向,它set 中的一个常参数含义set 容器中的关键字的数据类型它能提供比较两个元素的函数来决定它们在 set 容器中的相对位置。它是可选的,它的默认值是 less它代管理设备。它是可选的,它的默认值下面介绍 set 的成员函数。set:begin功能:返回第一个元素的语法:(iterator)的地址。const_iterator begin() const; i

4、terator begin();说明:当返回的第一个元素的地址值为一个常值当返回的第一个元素的地址值为一个函数返回值:(_iteratorset 不会被修改。(iteratorset 可被修改。返回一个指向第一个元素的双向示例:地址。程序程序功能说明:用 begin 下面介绍 set 的成员函数。set:begin功能:返回第一个元素的语法:(iterator)的地址。const_iterator begin() const; iterator begin();说明:当返回的第一个元素的地址值为一个常值当返回的第一个元素的地址值为一个函数返回值:(_iteratorset 不会被修改。(ite

5、ratorset 可被修改。返回一个指向第一个元素的双向示例:地址。程序程序功能说明:用 begin 来定位到 ctr 的开始位置,并打印出该元素。 #include #include using set set :iteratorcp; /定位到 ctr 的开始位置element 成员变量功能说明它能提供到一个常元的指针const 一个常元地址提供一个双向的,使得能够在set 容器中任意一个常值元素它提供 set 容器中由所指定的范围内的元素的个数提供一个双向,使得能够在 set 中者修改元素Key 它是提供两个元素的关键字的次序关系的函数它描述每一个元素的关键字提供一个指向 set 中的某

6、元素的指针提供在 set 容器中的一个常元的地址在反向的 set 容器中提供一个双向的,使得能够或者修改元素set 容器中元素个数value 指传供一个能比较两个元素相对次序的函数的数据类型/打印出第一个元素return 运行结果:运行结果如图 1 所示。图程序运行结果set/打印出第一个元素return 运行结果:运行结果如图 1 所示。图程序运行结果set:clear功能:set 容器的全部元素删除。语法:void 说明:clear 会删除 set 容器的全部元素。函数返回值:无。示例:程序程序功能说明:先创建一个 set 容器,再用 clear 函数清空,最后打印是否为空的信息。 #in

7、clude #include using namespaset ctr; if(ct.empty(/set 容器/set 容器为空时coutThe container is /set 容器为非空时coutThe container is not return 运行结果:运行结果如图 2 所示。图程序运行结果set:co运行结果如图 2 所示。图程序运行结果set:count功能:返回对应某个关键字的元素的个数。语法:size_type const Key& ) 说明:_Key 是要进行匹配的关键字的值。函数返回值:返回关键字为_Key 的元素的个数。示例:程序程序功能说明:先创建一个 set

8、容器,再用 count 函数求出关键字为 1 的元素的个数。 #include #include using namespaset ctr; i=ctr.count(a); /求出关键字为字符a的元素的个数coutThere is no such coutThe number of key is: return 运行结果:运行结果如图 3 所示。图程序运行结果set:empty功能:测试一个 set 容器是否为空。语法:bool empty()set:empty功能:测试一个 set 容器是否为空。语法:bool empty() 说明:empty 函数用于测试一个 set 容器是否为空。函数返

9、回值:当容器 set 为空时,返回 true,否则返回 false示例:程程序功能说明:先创建一个 set 容器,打印是否为空的信息。 #include #include using set if(ct.empty(/set 容器为空时coutThe container is /set 容器为非空时coutThe container is not emptyendl; return 0;运行结果:运行结果如图 4 所示。图程序运行结果set:end功能:返回最后一个元素后面的语法:const_iterator end()const; iterator end();说明:end 函数用于测试一个

10、(iterator)的地址。是否已达到它的尾部。函数返回值:返回一个指向 最后一个元素后面的双向示例:地址。当 set 容器为空时,结果没定义。程序程序功能说明:先初始化一个 set,再打印其中的内容,最后显示出最后一个元素的值。 #include #include using (函数返回值:返回一个指向 最后一个元素后面的双向示例:地址。当 set 容器为空时,结果没定义。程序程序功能说明:先初始化一个 set,再打印其中的内容,最后显示出最后一个元素的值。 #include #include using (set /用于打印一个 set :const_iterato /cp c 的开始到结

11、束打印 cp 对应的值cout*cp ; return 0;set :const_iterato /ctr 赋值coutThe ctr is: p/调用子程序来打印 ctr 的内容ement is: /cp 指向最后一个元素的位置coutendlThe las cp-return /显示最后一个元素的值运行结果:运行结果如图 5 所示。图程序运行结果set:equal_range功能:返回一对,它们分别指向第一个大于或等于给定的关键字的元素和第一个比给定的关键字大的元素。语法:pair equal_range const Key& ) pair equal_range const Key& )

12、 说明:_Key 是一个用于排序的关键字。函数返回值:返回一对 要从第一个从第二个示例:。中取得数据,可用 。中取得数据,则用 pr.second程序字大的元素。语法:pair equal_range const Key& ) pair equal_range const Key& ) 说明:_Key 是一个用于排序的关键字。函数返回值:返回一对 要从第一个从第二个示例:。中取得数据,可用 。中取得数据,则用 pr.second程序程序功能说明:先初始化一个 set,再打印其中的内容,最后打印出关键字=2 及2 的元素。 #include #include using (set /用于打印一个

13、 set :const_iterato /cp c 的开始到结束打印 cp 对应的值cout*cp pair :const_iterato set :const_iterator /ctr 赋值cout= 2 is: /调用子程序来打印一项if(p.second!=ct.end(element which key 2 is:/调用子程序来打印一项if(p.second!=ct.end(element which key 2 is: return 运行结果:运行结果如图 6 所示。程序运行结果set:erase功能:将一个或一定范围的元素删除。语法:iterator iterator itera

14、tor iterator iterator ,size_type const key_type& 说明:3 erase 的参数说明。表erase 的参数说明注意:它不会抛出任何的 exception函数返回值:前两个函数返回一个指向第一个没被删除的元素的双向回 set 容器的末尾。,如果不存在这样的元素,则返参数含义表示要删除的元素的位置_第一个被删除的元素的位置第一个不被删除的元素的位置set 容器中删除的元素的关键字的值第三个函数返回被删除的元素的个数。示例:程序程序功能说明:用 erase ctr 的第二个元素删除。 #include #include using #define len

15、 (set /用于打印一个 第三个函数返回被删除的元素的个数。示例:程序程序功能说明:用 erase ctr 的第二个元素删除。 #include #include using #define len (set /用于打印一个 set :const_iterato /cp c 的开始到结束打印 cp 对应的值cout*cp set :iteratorcp; /下面先给 ctr 赋值coutctr p/调用子程序,把 ctr 打印出来coutAfter erase the second elementctr is:; /ctr cp 位置的元素/调用子程序,把 ctr 打印出来preturn 运

16、行结果:运行结果如图 7 所示。图程序运行结果set:find功能:求出与给定的关键字相等的元素的语法:iterator const Key& const_iterator find( const Key& ) 说明:_Key 是要进行搜索的关键字的值。该函数会返回一个指向关键字为_Key 的元素的当返回的第一个元素的地址值为一个常值。(_iset:find功能:求出与给定的关键字相等的元素的语法:iterator const Key& const_iterator find( const Key& ) 说明:_Key 是要进行搜索的关键字的值。该函数会返回一个指向关键字为_Key 的元素的当

17、返回的第一个元素的地址值为一个常值。(_iteratorset 可通过它不会被修改。(iteratorset 可通过它被修改。当返回的第一个元素的地址值为一个函数返回值:找到该元素时,返回一个指向关键字为_Key 的元素的。示例:,否则返回一个指向 set 容器的结束的程序程序功能说明:用将 key=2 的元素打印出来。 #include #include using #define len (set /用于打印一个 set :const_iterato /cp c 的开始到结束打印 cp 对应的值cout*cp set :iteratorcp; /下面先给 ctr 赋值coutctr p/调

18、用子程序,把 ctr 打印出来/key=2 的元素if(cp!=ct.end( /找到时,打印出来coutThe element whose key = 2 is:/key=2 的元素if(cp!=ct.end( /找到时,打印出来coutThe element whose key = 2 is:; /找不到时coutThere is no element whose key = return 运行结果:运行结果如图 8 所示。图程序运行结果set:get_allocato功能:返回一个构造该 set 容器的 allocator 的一个副本。语法:说明:et_allocator() set a

19、llocator 指明一个类的函数返回值:返回该容器的 allocator示例:管理。默认的 allocator 能提供 STL 容器高效的运行。程序程序功能说明:用 ctr allocator 来创建 ctr2 #include #include using set ctr; set t2(less()tgtaoaor()coutctr2s size is: ctr2.sizeendl; return 0;运行结果:运行结果如图 9 所示。图程序运行结果set:insert功能:将一个元素或者一定数量的元素语法:pair insert( const value_type& _Valitera

20、tor iterator const value_type& template void insert运行结果:运行结果如图 9 所示。图程序运行结果set:insert功能:将一个元素或者一定数量的元素语法:pair insert( const value_type& _Valiterator iterator const value_type& template void insert(set 的特定位置中。InputIterator InputIterator ,说明:4 insert 的参数说明。表insert 的参数说明如果能在_Where 后面迅速地第三个成员函数将范围为 _函数返

21、回值:第一个函数返回一对值,当,那么只要很短的时间。,_Last 中的元素。成功时,bool=true,当要的元素的关键字与已有的参数的值相同,则 bool=false,而 iterator 指向的位置或者已存在的元素的位置。第二个函数返回指向示例:的位置的程程序功能说明:利用 insert 函数给 ctr 赋值。 #include 参数含义第一入到set 的元素的位置的参数的值第一入的位置第一个入的位置#include using #define len (set /用于打印一个 set :const_itera#include using #define len (set /用于打印一个

22、set :const_iterato /cp c 的开始到结束打印 cp 对应的值cout*cp set :iteratorcp; /下面先给 ctr 赋值coutctr p/调用子程序,把 ctr 打印出来retrn 运行结果:运行结果如图 10 所示。图程序运行结果set:p功能:取得一个比较对象的副本来对 set 容器中的元素进行排序。语法:p() 说明:对象定义了一个成员函数:bool operator(const Key& _Left, const Key& 当_Left 严格在_Right 的前面时,返回 true,否则返回 false函数返回值:取得一个对 set 容器中的元素进

23、行排序的比较对象。示例:程序程序功能说明:先取得一个pare 对象,再用此对象来比较 1 2 #include #include using set set , 示例:程序程序功能说明:先取得一个pare 对象,再用此对象来比较 1 2 #include #include using set set , :pare kc p();if(kc( 1, 2 return is is 运行结果:运行结果如图 11 所示。程序运行结果set:lower_bound功能:求出指向第一个关键字的值是大于等于一个给定值的元素的语法:iterator lower_bound( const Key& _Keyc

24、onst_iterator lower_bound( const Key& _Key) 说明:_Key 是一个用于排序的关键字。函数返回值:返回一个指向第一个关键字的值是大于等于一个给定值的元素的。,或者返回指向 set 器的结束的。示例:程序程序功能说明:先初始化一个 set,再打印其中的内容,最后将关键字大于等于 2 的元素打印出来。 #include #include using (set /用于打印一个 set :c示例:程序程序功能说明:先初始化一个 set,再打印其中的内容,最后将关键字大于等于 2 的元素打印出来。 #include #include using (set /用于

25、打印一个 set :const_iterato /cp c 的开始到结束打印 cp 对应的值cout*cp ; return 0;set :const_iterato /ctr 赋值cout= 2 is: /调用子程序来打印一项return 运行结果:运行结果如图 12 所示。图程序运行结果set:max_siz功能:set 容器的最大长度。语法:size_typeset:max_siz功能:set 容器的最大长度。语法:size_type max_size() 说明:max_size 会返回 set 容器的最大长度。函数返回值:set 容器可能的最大长度。示例:程程序功能说明:求出一个 se

26、t 容器的可能最大的长度。 #include #include using namespa#define len 5set :size_type for(i=0;ilen;i+)ctr.insert(i); /先给 ctr 赋值coutthe max_size of ctr is:; return 运行结果:运行结果如图 13 所示。图程序运行结果set:operator!功能:set 容器的左边与右边是否相同。语法:bool const set & _Left, const set & _Right说明:_Left 和_Right 是待比较的两个 set 容器。set 容器相等,当且仅当它们

27、的元素个数相等,且同一个位置上的值相等。函数返回值:当_Left 和_Right 不同时,返回 说明:_Left 和_Right 是待比较的两个 set 容器。set 容器相等,当且仅当它们的元素个数相等,且同一个位置上的值相等。函数返回值:当_Left 和_Right 不同时,返回 True,否则返回 False示例:程序程序功能说明:比较两个 set 容器是否相等。 #include #include using set ctr1,ctr2; /ctr1 ct2 不同时coutThey are not /ctr1 ctr2 相同时coutThey are return 运行结果:运行结果如

28、图 14 所示。图程序运行结果set:operator功能:测试左边的 set 容器是否小于右边。语法:bool const set & _Left, const set & _Right说明:_Left 和_Right 是待比较的两个 set 容器。set 容器的大小比较是基于第一个不相同的元素的大小比较。函数返回值:当_Left_Right 时,返回 说明:_Left 和_Right 是待比较的两个 set 容器。set 容器的大小比较是基于第一个不相同的元素的大小比较。函数返回值:当_Left_Right 时,返回 True,否则返回 False示例:程序程序功能说明:比较 ctr1 c

29、tr2 的大小。 #include #include using set ctr1,ctr2; /下面给 ctr1 ctr2 赋值return 运行结果:运行结果如图 15 所示。图程序运行结果set:operator=功能:测试左边的 set 容器是否小于或等于右边。语法:bool const set & _Left, const set & _Right说明:_Left 和_Right 是待比较的两个 set 容器。set 容器的大小比较是基于第一个不相同的元素的大小。函数返回值:当_Left=_Right说明:_Left 和_Right 是待比较的两个 set 容器。set 容器的大小比

30、较是基于第一个不相同的元素的大小。函数返回值:当_Left=_Right 时,返回 True,否则返回 False示例:程序程序功能说明:比较 ctr1 ctr2 的大小。 #include #include using set ctr1,ctr2; return 0;运行结果:运行结果如图 16 所示。图程序运行结果set:operator=功能:测试左边的 set 容器与右边是否相同。语法:bool const set & _Left, const set & _Right说明:_Left 和_Right 是待比较的两个 set 容器。set 容器相等当且仅当它们的元素个数相等且同一个位置

31、上的值相等。函数返回值:当_Left 和_Right 相同时,返回 True,否则返回 False示例:程序程序功能说明:比较两个数是否相等。 set 容器相等当且仅当它们的元素个数相等且同一个位置上的值相等。函数返回值:当_Left 和_Right 相同时,返回 True,否则返回 False示例:程序程序功能说明:比较两个数是否相等。 #include #include using set ctr1,ctr2; /ctr1 ctr2 相同时coutThey are /ctr1 ct2 不同时coutThey are not return 运行结果:运行结果如图 17 所示。图程序运行结果s

32、et:operator功能:测试左边的 set 容器是否大于右边。语法:bool const set & _Left, const set & _Right)说明:_Left 和_Right 是待比较的两个 set 容器。set 容器的大小比较是基于第一个不相同的元素的大小比较。函数返回值:当_Left_Right 时,返回 True,否则返回 False示例:程序程序功能说明:比较 ctr1 当_Left_Right 时,返回 True,否则返回 False示例:程序程序功能说明:比较 ctr1 ctr2 的大小。 #include #include using set ctr1,ctr2;

33、 return 0;运行结果:运行结果如图 18 所示。图程序运行结果set:operator=功能:测试左边的 set 容器是否大于或等于右边。语法:bool const set & _Left, const set & _Right说明:_Left 和_Right 是待比较的两个 set 容器。set 容器的大小比较是基于第一个不相同的元素的大小比较。函数返回值:当_Left=_Right 时,返回 True,否则返回 False示例:程序程序功能说明:比较 ctr1 ctr2 的大小。 #include #include using set ctr1,ctr2; 示例:程序程序功能说明:

34、比较 ctr1 ctr2 的大小。 #include #include using set ctr1,ctr2; return 运行结果:运行结果如图 19 所示。图程序运行结果set:rbegin功能:返回一个指向反向 set 容器的第一个元素的语法:const_reverse_iterator rbegin()const; reverse_iterator rbegin();说明:。rbegin set 容器一起使用,它的作用与 set 容器中的 begin 一样。当返回值为一个 const_reverse_iterator,则 set 容器不会被修改。当返回值为一个 reverse _i

35、teratorset 容器可被修改。函数返回值:返回一个指向反向 set 容器的第一个元素的反向双向示例:。程序程序功能说明:打印出正向和反向的 set 容器。 #include #include #define len using (set /用于打印一个 set :程序功能说明:打印出正向和反向的 set 容器。 #include #include #define len using (set /用于打印一个 set :const_iterato /cp c 的开始到结束打印 cp 对应的值cout*cp ; return 0;set set :iterator:reverse_itera

36、to /下面先给 ctr 赋值coutctr p/调用子程序,把 ctr 打印出来coutIts reverse /打印出反向 set 容器cout*rcp ; return 运行结果:运行结果如图 20 所示。图程序运行结果set:rend功能:返回一个指向反向 set 容器的最后元素后面的。语法:const_reverse_iterator rend() const; reverse_iterator rend();说明:rend set 容器一起使用,它的作用与 set 容器中的 end 一样。当返回值为一个 const _reverse _iterator,则 set 不会被修改。当返

37、回值为一个 reverse _iteratorset 可被修改。函数返回值:语法:const_reverse_iterator rend() const; reverse_iterator rend();说明:rend set 容器一起使用,它的作用与 set 容器中的 end 一样。当返回值为一个 const _reverse _iterator,则 set 不会被修改。当返回值为一个 reverse _iteratorset 可被修改。函数返回值:返回一个指向反向 set 容器中的最后一个元素后面的反向双向示例:程程序功能说明:打印出正向和反向的 set 容器。 #include #inc

38、lude 。using #define len (set /用于打印一个 set :const_iterato /cp c 的开始到结束打印 cp 对应的值cout*cp ; return 0;set set :iterator:reverse_iterato /下面先给 ctr 赋值coutctr p/调用子程序,把 ctr 打印出来coutIts reverse /打印出反向 set 容器cout*rcp ; return 运行结果:运行结果如图 21 所示。程序运行结果set:set功能:set 的构造函数。语法:运行结果:运行结果如图 21 所示。程序运行结果set:set功能:set

39、 的构造函数。语法:explicit set const Compare& explicit set const Compare& _Comp, const Allocator& _Alconst _ set & template set (InputIterator InputIterator ,template set (InputIterator ,InputIterator const Compare& template set (InputIterator ,InputIterator const Compare& _Comp, const Allocator& _Al说明:5 se

40、t 函数的参数说明。表set 函数的参数说所有的构造函数都所有的构造函数都一个分配器和初始化 set 容器。Traits 类型的函数对象,它用于对 set 容器的元素进行排序。头三个构造函数创建一个空的初始 set 容器。第四个构造函数创建一个_Right 容器的副本。后三个构造函数拷贝在范围函数返回值:无。示例:_Last 内的一个 set 容器。程序程序功能说明:先定义一个 ctr1 set 容器,再构造一个与 ctr1 相同的容器。 #include #include using表set 函数的参数说所有的构造函数都所有的构造函数都一个分配器和初始化 set 容器。Traits 类型的函

41、数对象,它用于对 set 容器的元素进行排序。头三个构造函数创建一个空的初始 set 容器。第四个构造函数创建一个_Right 容器的副本。后三个构造函数拷贝在范围函数返回值:无。示例:_Last 内的一个 set 容器。程序程序功能说明:先定义一个 ctr1 set 容器,再构造一个与 ctr1 相同的容器。 #include #include using (set /用于打印一个 set const_iterator /cp c 的开始到结束打印 cp 对应的值cout*cp /创建一个有两个为字母为a的 /ctr1 赋值set /创建一个以 ctr1 相同的 set 容器coutThe

42、ctr2 is: p/ctr2 的内容return 运行结果:参数含义一个分配器类一个用于比较的函数,它的默认值为 set 的拷贝被拷贝的第一个元素的位置不被拷贝的第一个元素的位置运行结果如图 22 所示。图程序运行结果set:size功能:运行结果如图 22 所示。图程序运行结果set:size功能:set 容器的元素的个数。语法:size_type size() 说明:size 函数会计算出 set 容器的元素的个数。函数返回值:set 容器的长度。示例:程程序功能说明:求出 set 容器的长度。 #include #include using namespa#define len 5set coutThe current sets length is: ; return /下面先给 ctr 赋值运行结果:运行结果如图 23 所示。程序运行结果set:swap功能:交换两个 set 容器的元素。语法:void set& 说明:_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论