关键字:begin、clear、count 、empty、end、find、insert
引言:multiset是一个容器,它用于储存数据并且能从一个数据集合中取出数据。它的每个元素的值不必惟一(即可以取相同的值),而且系统会根据该值来自动将数据排序。每个元素的值不能直接被改变。
正文:
bnc.wwwC++ 中的multiset容器
ww wbnc.kookoote.n1 multiset容器
.coobnc.wwwmultiset容器简介:
multiset是一个容器,它用于储存数据并且能从一个数据集合中取出数据。它的每个元素的值不必惟一(即可以取相同的值),而且系统会根据该值来自动将数据排序。每个元素的值不能直接被改变。
需加载的头文件: #include using namespace std; 模板原型: template < class Key, class Compare=less 说明: 表1为参数说明。 tenk. oobnnk. et bnc.wwwkoote.n参数 Key Compare multiset容器有以下特点: (1)它是一个相关联的容器,它的大小可以改变,它能根据关键字值来提高读取数据的能力。 (2)它提供一个双向的定位器来读写取数据。 (3)它已经根据关键字和一个比较函数来排好序。 (4)它的每一个元素的关键字不是惟一的,它们可以相同,因此同一个值可能有很多个元素与它对应。 (5)它是一个简单的容器,因为它的元素值就是它的关键字。 (6)它是一个模板类,因为它提供一个一般且具有性的容器。 成员变量: 表2为multiset的成员变量说明。 wwwallocator oobnc.含义 存储在multiset容器中的关键字的数据类型 它能提供比较两个元素的函数来决定它们在multiset容器中的相对位置 它是可选的,它的默认值是less 它代表存储管理设备。它是可选的,它的默认值为allocator tenk.表1 multiset的参数说明 bnc.wwww wkoote.nncw.koobwwc.woobnenk. t※ 1 ※ ooenk. tw wcw.o tenk. allocator_type const_iterator bnc.www成员变量 koo功能说明 表2 multiset的成员变量说明 对象分配器 提供一个双向的定位器,它能读取multiset中的一个常元 它能提供一个常元的指针 一个常元的地址 提供一个双向的定位器,使得能够在multiset容器中读取任意一个常值元素 它提供multiset容器中由定位器所指定的范围内的元素的个数 提供一个双向入口定位器,使得能够在multiset中读取或者修改元素 const_pointer const_reference const_reverse_iterator difference_type iterator .coobntenk.key_compare key_type pointer reference reverse_iterator size_type value_type ww wbnc.koote.n 下面介绍multiset的成员函数。 它是提供一个两个元素的关键字的次序关系的函数 它描述每一个元素的关键字 提供一个指向multiset中的某元素的指针 提供在multiset容器中的一个常元的地址 在反向的multiset容器中提供一个双向的入口定位器,使得能够在读取或者修改元素 multiset容器中元素个数 存储的数据类型 1.1 multiset::begin c.www功能: 返回第一个元素的定位器(iterator)的地址。 语法: const_iterator begin() const; iterator begin(); 说明: 当返回第一个元素的地址值为一个常值定位器(_iterator),则multiset不会被修改。 当返回第一个元素的地址值为一个定位器(iterator),则multiset可被修改。 函数返回值: 返回一个指向第一个元素的双向定位器地址。 示例: /*************************************************** 程序编号:1 程序功能说明:用begin定位到ctr的开始位置,并打印出该元素。 ***************************************************/ #include #include using namespace std; multiset oobnnk. et bnc.wwwkoote.nte.nwwwoobnc. tenk. bnc.wwww wkooncw.koobwwc.woobnenk. t※ 2 ※ ooenk. tw wcw.o tenk. cp=ctr.begin(); //定位到ctr的开始位置 cout<<\"The first element is:\"<<*cp< 运行结果: 运行结果如图1所示。 bnc.wwwkookoote.nte.nte.n.coobn1.2 multiset::clear 功能: 将一个multiset容器的全部元素删除。 语法: void clear(); 说明: clear会删除multiset容器的全部元素。 函数返回值: 无。 示例: tenk. ww wbnc.图1 程序运行结果 c.www{ /*************************************************** 程序编号:2 oobnnk. et bnc.www koo程序功能说明:先创建一个multiset容器,再用clear函数清空,最后打印是否为空的信息。 ***************************************************/ #include int main() using namespace std; multiset wwwoobnc. tenk. bnc.wwww wkooncw.koob//清空multiset容器 if(ctr.empty()) //multiset容器为空时 cout<<\"The container is empty\"< cout<<\"The container is not empty\"< ooenk. tw wcw.o tenk.} 运行结果: 运行结果如图2所示。 bnc.wwwkookoote.nte.nte.n1.3 multiset::count .coobn功能: 返回对应某个关键字的元素的个数。 语法: size_type count( const Key& _Key ) const; 说明: _Key 是要进行匹配的关键字的值。 函数返回值: 返回关键字为_Key的元素的个数。 示例: tenk. ww w图2 程序运行结果 bnc. /*************************************************** 程序编号:3 c.www{ 程序功能说明:先创建一个multiset容器,再用count函数来求出关键字为1的元素的个数。 ***************************************************/ #include oobnnk. et bnc.wwwkoo using namespace std; multiset i=ctr.count('a'); if(i==0) } 运行结果: else return 0; wwwoobnc. tenk. bnc.wwww wkooncw.koob//求出关键字为字符'a'的元素的个数 cout<<\"There is no such key!\"< ooenk. tw wcw.运行结果如图3所示。 o tenk. bnc.wwwkookoo te.nte.n图3 程序运行结果 1.4 multiset::empty .coobnc.www功能: 测试一个multiset容器是否为空。 语法: bool empty() const; 说明: empty函数用于测试一个multiset容器是否为空。 函数返回值: 当容器multiset为空时,返回true,否则返回false。 示例: /*************************************************** 程序编号:4 程序功能说明:先创建一个multiset容器,再用clear函数清空,最后打印是否为空的信息。 ***************************************************/ #include #include using namespace std; multiset 运行结果如图4所示。 tenk. ww wbnc.oobnnk. et bnc.wwwkoowwwoobnc. tenk. bnc.wwww wkoote.nncw.koob1.5 multiset::end 功能: 返回最后一个元素后面的定位器(iterator)的地址。 ※ 5 ※ wwc.woobnenk. t图4 程序运行结果 ooenk. tw wcw.o tenk..coobnc.www语法: const_iterator end() const; iterator end(); 说明: end函数用于测试一个定位器是否已达到它的尾部。 函数返回值: 返回一个指向最后一个元素后面的双向定位器地址。当multiset容器为空时,结果没定义。 示例: /*************************************************** 程序编号:5 程序功能说明:先初始化一个multiset,再打印其中的内容,最后显示出最后一个元素的值。 ***************************************************/ #include #include int print(multiset multiset for(cp=c.begin();cp!=c.end();cp++) //让cp从c的开始到结束打印cp对应的值 cout<<*cp<<\" \"; return 0; } int main() { multiset for(i=0;i<3;i++)ctr.insert(i); //给ctr赋值 cout<<\"The ctr is: \"; print(ctr); //调用子程序来打印ctr的内容 cout< cout<<*cp< 运行结果如图5所示。 bnc.wwwkookoote.ntenk. ww wbnc.oobnnk. et bnc.wwwkoote.nwwwoobnc. tenk. bnc.wwww wkoote.nncw.koobwwc.woobnenk. t 图5 程序运行结果 ※ 6 ※ ooenk. tw wcw.1.6 multiset::equal_range o tenk..coobnc.www功能: 返回一对定位器,它们分别指向第一个大于或等于给定的关键字的元素和第一个比给定的关键字大的元素。 语法: pair pair _Key 是一个用于排序的关键字。 函数返回值: 返回一对定位器。 要从第一个定位器中取得数据,可用pr.first。 从第二个定位器中取得数据,则用pr.second。 示例: /*************************************************** 程序编号:6 程序功能说明:先初始化一个multiset,再打印其中的内容,最后打印出关键字>=2和>2的元素。 ***************************************************/ #include #include int print(multiset multiset for(cp=c.begin();cp!=c.end();cp++) //让cp从c的开始到结束打印cp对应的值 cout<<*cp<<\" \"; return 0; } int main() { multiset for(i=0;i<=3;i++)ctr.insert(i); //给ctr赋值 cout<<\"The ctr is: \"; print(ctr); //调用子程序来打印ctr的内容 cout< bnc.wwwkookoote.ntenk. ww wbnc.oobnnk. et bnc.wwwkoote.nwwwoobnc. tenk. bnc.wwww wkoote.nncw.koobwwc.woobnenk. tooenk. tw wcw.o tenk..coobn p=ctr.equal_range(2); if(p.first!=ctr.end()) { cout<<\"The first element which key >= 2 is: \"; cout<<*p.first; //调用子程序来打印一项 cout< 运行结果: 运行结果如图6所示。 bnc.wwwkookoote.nte.nte.ntenk. ww wbnc.1.7 multiset::erase c.www功能: 将一个或一定范围的元素删除。 语法: iterator erase( iterator _Where ); iterator erase( iterator _First, iterator _Last ); size_type erase( const key_type& _Key ); 说明: 表3为erase的参数说明。 oobnnk. et bnc.www koo图6 程序运行结果 wwwoobnc.参数 _Where _First _Last _Key tenk. bnc.wwww wkooncw.koob 注意:它不会抛出任何的exception。 ※ 8 ※ wwc.w表示要删除的元素的位置 第一个被删除的元素的位置 第一个不被删除的元素的位置 从multiset容器中删除的元素的关键字的值 oobn表3 erase的参数说明 含义 enk. tooenk. tw wcw.o tenk..coobn函数返回值: 前两个函数返回一个指向第一个没被删除的元素的双向定位器,如果不存在这样的元素,则返回multiset容器的末尾。 第三个函数返回被删除的元素的个数。 示例: /*************************************************** 程序编号:7 程序功能说明:用erase函数将ctr的第二个元素删除。 ***************************************************/ #include #include int print(multiset multiset for(cp=c.begin();cp!=c.end();cp++) //让cp从c的开始到结束打印cp对应的值 cout<<*cp<<\" \"; return 0; } int main() { multiset bnc.wwwkookoote.ntenk. ww wbnc. c.www int i; for(i=0;i ctr.erase(cp); //擦除ctr的cp位置的元素 print(ctr); //调用子程序,把ctr打印出来 cout< 运行结果如图7所示。 oobnnk. et bnc.wwwkoote.nwwwoobnc. tenk. bnc.wwww wkoote.nncw.koobwwc.woobnenk. t 图7 程序运行结果 ※ 9 ※ ooenk. tw wcw.1.8 multiset::find o tenk..coobnc.www功能: 求出与给定的关键字相等的元素的定位器。 语法: iterator find( const Key& _Key ); const_iterator find( const Key& _Key ) const; 说明: _Key 是要进行搜索的关键字的值。 该函数会返回一个指向关键字为_Key的元素的定位器 当返回的第一个元素的地址值为一个常值定位器(_iterator),则multiset可通过它不会被修改。 当返回的第一个元素的地址值为一个定位器(iterator),则multiset可通过它被修改。 函数返回值: 找到该元素时,返回一个指向关键字为_Key的元素的定位器,否则返回一个指向multiset容器的结束的定位器。 示例: /*************************************************** 程序编号:8 程序功能说明:用将key=2的元素打印出来。 ***************************************************/ #include #include int print(multiset multiset for(cp=c.begin();cp!=c.end();cp++) //让cp从c的开始到结束打印cp对应的值 cout<<*cp<<\" \"; return 0; } int main() { multiset for(i=0;i bnc.wwwkookoote.ntenk. ww wbnc.oobnnk. et bnc.wwwkoote.nwwwoobnc. tenk. bnc.wwww wkoote.nncw.koobwwc.woobnenk. tooenk. tw wcw.o tenk. cp=ctr.find(2); //查找key=2的元素 if(cp!=ctr.end()) //找到时,打印出来 { cout<<\"The element whose key = 2 is:\"; cout<<*cp; cout< 运行结果如图8所示。 bnc.wwwkookoote.nte.nte.n.coobntenk. ww wbnc.1.9 multiset::get_allocator c.www功能: 返回构造该multiset容器的allocator的一个副本。 语法: Allocator get_allocator() const; 说明: 容器multiset的allocator指明一个类的存储管理。默认的allocator能提供STL容器高效的运行。 函数返回值: 该容器的allocator。 示例: /*************************************************** 程序编号:9 程序功能说明:用ctr的allocator来创建ctr2。 ***************************************************/ #include #include int main() { multiset oobnnk. et bnc.www koo图8 程序运行结果 wwwoobnc. tenk. bnc.wwww wkooncw.koobwwc.woobnenk. tooenk. tw wcw.o tenk. return 0; } 运行结果: 运行结果如图9所示。 bnc.wwwkookoo te.nte.nte.n1.10 multiset::insert .coobnc.www 功能: 将一个元素或者一定数量的元素插入到multiset的特定位置中。 语法: pair iterator insert( iterator _Where, const value_type& _Val ); template InputIterator _First, InputIterator _Last ); 说明: 表4为insert的参数说明。 tenk. ww wbnc.图9 程序运行结果 oobnnk. et bnc.wwwkoo如果能在_Where后面迅速地插入,那么只要很短的时间。 第三个成员函数将范围为[ _First,_Last ]中的元素插入。 函数返回值: 第一个函数返回一对值,当插入成功时,bool=true,当要插入的元素的关键字与已有的参数的值相同,则bool=false,而iterator指向插入的位置或者已存在的元素的位置。 第二个函数返回指向插入的位置的定位器。 示例: /*************************************************** 程序编号:10 程序功能说明:利用insert函数给ctr赋值。 ***************************************************/ ※ 12 ※ wwwoobnc.参数 _Where _Val _First _Last 第一个被插入到multiset的元素的位置 插入的参数的值 第一个被插入的位置 第一个不被插入的位置 tenk. bnc.wwww wkoo表4 insert的参数说明 含义 ncw.koobwwc.woobnenk. tooenk. tw wcw.o tenk..coobnc.www#include #include int print(multiset multiset for(cp=c.begin();cp!=c.end();cp++) //让cp从c的开始到结束打印cp对应的值 cout<<*cp<<\" \"; return 0; } int main() { multiset for(i=0;i 运行结果如图10所示。 bnc.wwwkookoote.nte.nte.ntenk. ww wbnc.oobnnk. et bnc.wwwkoo1.11 multiset::key_comp 功能: 取得一个比较对象的副本来对multiset容器中的元素进行排序。 语法: key_compare key_comp() const; 说明: 存储对象定义了一个成员函数: bool operator(const Key& _Left, const Key& _Right); 当_Left严格在_Right的前面时,返回true,否则返回false。 函数返回值: 取得一个对multiset容器中的元素进行排序的比较对象。 示例: /*************************************************** wwwoobnc. tenk. bnc.www koo图10 程序运行结果 wwc.woobnenk. tw wncw.koob※ 13 ※ ooenk. tw wcw.o tenk..coobn程序编号:11 程序功能说明:先取得一个key_compare对象,再用此对象来比较1和2。 ***************************************************/ #include #include multiset cout<<\"kc(1,2) is true\"< cout<<\"kc(1,2) is false\"< 运行结果: 运行结果如图11所示。 bnc.wwwkookoote.ntenk. ww wbnc.c.wwwoobnnk. et bnc.wwwkoote.nte.n1.12 multiset::lower_bound 功能: 求出指向第一个关键字的值是大于等于一个给定值的元素的定位器。 语法: iterator lower_bound( const Key& _Key ); const_iterator lower_bound( const Key& _Key ) const; 说明: _Key 是一个用于排序的关键字。 函数返回值: 返回一个指向第一个关键字的值是大于等于一个给定值的元素的定位器,或者返回指向multiset容器的结束的定位器。 wwwoobnc. tenk. bnc.www koo图11 程序运行结果 wwc.woobnenk. tw wncw.koob※ 14 ※ ooenk. tw wcw.o tenk..coobnc.www示例: /*************************************************** 程序编号:12 程序功能说明:先初始化一个multiset,再打印其中的内容,最后将关键字大于等于2的元素打印出来。 ***************************************************/ #include #include int print(multiset multiset for(cp=c.begin();cp!=c.end();cp++) //让cp从c的开始到结束打印cp对应的值 cout<<*cp<<\" \"; return 0; } int main() { multiset for(i=0;i<=3;i++)ctr.insert(i,i); //给ctr赋值 cout<<\"The ctr is: \"; print(ctr); //调用子程序来打印ctr的内容 cout< 运行结果: 运行结果如图12所示。 bnc.wwwkookoote.ntenk. ww wbnc.oobnnk. et bnc.wwwkoote.nwwwoobnc. tenk. bnc.wwww wkoote.nncw.koobwwc.woobnenk. t图12 程序运行结果 ※ 15 ※ ooenk. tw wcw.1.13 multiset::max_size o tenk..coobnc.www功能: 计算multiset容器的最大长度。 语法: size_type max_size() const; 说明: max_size会返回multiset容器的最大长度。 函数返回值: 返回multiset容器可能的最大长度。 示例: /*************************************************** 程序编号:13 程序功能说明:求出一个multiset容器的可能最大的长度。 ***************************************************/ #include #include multiset for(i=0;i 运行结果如图13所示。 bnc.wwwkookoote.nte.nte.ntenk. ww wbnc.oobnnk. et bnc.wwwkoowwwoobnc. tenk. bnc.wwww wkooncw.koob图13 程序运行结果 1.14 multiset::multiset 功能: multiset的构造函数。 语法: multiset(); explicit multiset ( const Compare& _Comp wwc.woobnenk. t ※ 16 ※ ooenk. tw wcw.o tenk..coobnc.www ); explicit multiset ( const Compare& _Comp, const Allocator& _Al ); set( const _ multiset & _Right ); template InputIterator _First, InputIterator _Last ); template InputIterator _First, InputIterator _Last, const Compare& _Comp ); template InputIterator _First, InputIterator _Last, const Compare& _Comp, const Allocator& _Al ); 说明: 表5为multiset函数的参数说明。 bnc.wwwkookoote.nte.nte.ntenk. ww wbnc.oobnnk.参数 et bnc.wwwkoo所有的构造函数都存储一个分配器和初始化multiset容器。 所有的构造函数都存储一个Traits类型的函数对象,它用于对multiset容器的元素进行排序。 头三个构造函数创建一个空的初始multiset容器。 第四个构造函数创建一个_Right容器的副本。 后三个构造函数拷贝在范围_First~_Last内的一个multiset容器。 函数返回值: 无。 示例: /*************************************************** 程序编号:14 程序功能说明:先定义一个ctr1的multiset容器,再构造一个与ctr1相同的容器。 wwwoobnc._Al _Comp _Right _First _Last 一个分配器类 一个用于比较的函数,它的默认值为compare 一个multiset的拷贝 被拷贝的第一个元素的位置 不被拷贝的第一个元素的位置 tenk.表5 multiset函数的参数说明 含义 bnc.wwww wkooncw.koobwwc.woobnenk. t※ 17 ※ ooenk. tw wcw.o tenk..coobnc.www***************************************************/ #include #include int print(multiset multiset for(cp=c.begin();cp!=c.end();cp++) //让cp从c的开始到结束打印cp对应的值 cout<<*cp<<\" \"; return 0; } int main() { multiset for(i=0;i<=3;i++)ctr1.insert(i); //给ctr1赋值 multiset 运行结果如图14所示。 bnc.wwwkookoote.nte.nte.ntenk. ww wbnc.oobnnk. et bnc.wwwkoo1.15 multiset::operator!= 功能: 测试左边的multiset容器与右边是否相同。 语法: bool operator!=( const multiset _Left和_Right是待比较的两个multiset容器。 wwwoobnc. tenk. bnc.wwww wkoo 图14 程序运行结果 ncw.koobwwc.woobnenk. t※ 18 ※ ooenk. tw wcw.o tenk..coobnc.www两个multiset容器相等当且仅当它们的元素个数相等且同一个位置上的值相等。 函数返回值: 当_Left和_Right不同时,返回True,否则返回False。 示例: /*************************************************** 程序编号:15 程序功能说明:比较两个multiset容器是否相等。 ***************************************************/ #include #include using namespace std; multiset for(i=0;i<3;i++) { ctr1.insert('a'+i); ctr2.insert('A'+i); } if(ctr1!=ctr2) //当ctr1与ct2不同时 cout<<\"They are not equal\"< bnc.wwwkookoote.ntenk. ww wbnc.oobnnk. et bnc.wwwkoote.nte.n1.16 multiset::operator< 功能: 测试左边的multiset容器是否小于右边。 语法: bool operator==( const multiset _Left和_Right是待比较的两个multiset容器。 两个multiset容器的大小比较是基于第一个不相同的元素的大小比较。 wwwoobnc. tenk. bnc.www koo图15 程序运行结果 wwc.woobnenk. tw wncw.koob※ 19 ※ ooenk. tw wcw.o tenk..coobnc.www函数返回值: 当_Left<_Right时,返回True,否则返回False。 示例: /*************************************************** 程序编号:16 程序功能说明:比较ctr1与ctr2的大小。 ***************************************************/ #include #include using namespace std; multiset for(i=0;i<3;i++) //下面给ctr1和ctr2赋值 { ctr1.insert('a'+i); ctr2.insert('A'+i); } if(ctr1 运行结果如图16所示。 bnc.wwwkookoote.nte.nte.ntenk. ww wbnc.oobnnk. et bnc.wwwkoo1.17 multiset::operator<= 功能: 测试左边的multiset容器是否小于或等于右边。 语法: bool operator<( const multiset _Left和_Right是待比较的两个multiset容器。 两个multiset容器的大小比较是基于第一个不相同的元素的大小比较。 wwwoobnc. tenk. bnc.www koo图16 程序运行结果 wwc.woobnenk. tw wncw.koob※ 20 ※ ooenk. tw wcw.o tenk..coobnc.www函数返回值: 当_Left<=_Right时,返回True,否则返回False。 示例: /*************************************************** 程序编号:17 程序功能说明:比较ctr1与ctr2的大小。 ***************************************************/ #include #include using namespace std; multiset for(i=0;i<3;i++) { ctr1.insert('a'+i); ctr2.insert('A'+i); } if(ctr1<=ctr2) cout<<\"ctr1<=ctr2\"< 运行结果如图17所示。 bnc.wwwkookoote.nte.nte.ntenk. ww wbnc.oobnnk. et bnc.wwwkoo1.18 multiset::operator== 功能: 测试左边的multiset容器与右边是否相同 语法: bool operator==( const multiset _Left和_Right是待比较的两个multiset容器。 两个multiset容器相等,当且仅当它们的元素个数相等,且同一个位置上的值相等。 wwwoobnc. tenk. bnc.www koo图17 程序运行结果 wwc.woobnenk. tw wncw.koob※ 21 ※ ooenk. tw wcw.o tenk..coobnc.www函数返回值: 当_Left和_Right相同时,返回True,否则返回False。 示例: /*************************************************** 程序编号:18 程序功能说明:比较两个数是否相等。 ***************************************************/ #include #include using namespace std; multiset for(i=0;i<3;i++) { ctr1.insert('a'+i); ctr2.insert('A'+i); } if(ctr1==ctr2) //当ctr1与ctr2相同时 cout<<\"They are equal\"< 运行结果如图18所示。 bnc.wwwkookoote.nte.nte.ntenk. ww wbnc.oobnnk. et bnc.wwwkoo1.19 multiset::operator> 功能: 测试左边的multiset容器是否大于右边。 语法: bool operator>( const multiset 说明: _Left和_Right是待比较的两个multiset容器。 两个multiset容器的大小比较是基于第一个不相同的元素的大小比较。 函数返回值: 当_Left>_Right时,返回True,否则返回False。 wwwoobnc. tenk. bnc.wwww wkoo图18 程序运行结果 ncw.koobwwc.woobnenk. t※ 22 ※ ooenk. tw wcw.o tenk..coobn示例: /*************************************************** 程序编号:19 程序功能说明:比较ctr1与ctr2的大小。 ***************************************************/ #include #include using namespace std; multiset for(i=0;i<3;i++) { ctr1.insert((i,'a'+i)); ctr2.insert((i,'A'+i)); } if(ctr1>ctr2) cout<<\"ctr1>ctr2\"< 运行结果如图19所示。 bnc.wwwkookoote.nte.nte.ntenk. ww wbnc.c.wwwoobnnk. et bnc.wwwkoo1.20 multiset::operator>= 功能: 测试左边的multiset容器是否大于或等于右边。 语法: bool operator>=( const multiset _Left和_Right是待比较的两个multiset容器。 两个multiset容器的大小比较是基于第一个不相同的元素的大小比较。 函数返回值: 当_Left>=_Right时,返回True,否则返回False。 wwwoobnc. tenk. bnc.www koo图19 程序运行结果 wwc.woobnenk. tw wncw.koob※ 23 ※ ooenk. tw wcw.o tenk..coobn示例: /*************************************************** 程序编号:20 程序功能说明:比较ctr1与ctr2的大小。 ***************************************************/ #include