如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
STL中的常用的vector,map,set,Sort用法C++的标准模板库(StandardTemplateLibrary,简称STL)是一个容器和算法的类库。容器往往包含同一类型的数据。STL中比较常用的容器是vector,set和map,比较常用的算法有Sort等。.一.vector1.声明:一个vector类似于一个动态的一维数组。vector<int>a;//声明一个元素为int类型的vectoravectot<MyType>a;//声明一个元素为MyType类型的vectora这里的声明的a包含0个元素,既a.size()的值为0,但它是动态的,其大小会随着数据的插入和删除改变而改变。vector<int>a(100,0);//这里声明的是一已经个存放了100个0的整数vector2.向量操作常用函数:size_tsize();//返回vector的大小,即包含的元素个数voidpop_back();//删除vector末尾的元素,vector大小相应减一voidpush_back();//用于在vector的末尾添加元素Tback();//返回vector末尾的元素voidclear();//将vector清空,vector大小变为0其他访问方式:cout<<a[5]<<endl;cout<<a.at(5)<<endl;以上区别在于后者在访问越界时会抛出异常,而前者不会。例:intintarray[10];vector<int>first_vector(intarray,intarray+10);vector<int>second_vector(first_vector.begin(),first_vector.end());classman{public:AnsiStirngid;AnsiStringmc;}vector<man>manList;manthisman;thisman.id="2001";thisman.name="yourname";manList.push_backthisman;//加入第一个元素thisman.id="2002";thisman.name="myname";manList.push_backthisman;//加入第二个元素manList.clear();//清空3.遍历(1).for(vector<datatype>::iteratorit=a.begin();it!=a.end();it++)cout<<*it<<endl;(2).for(inti=0;i<a.size;i++)cout<<a[i]<<endl;二.mapMap是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性map内部的实现自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能。下面举例说明什么是一对一的数据映射。比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述,很明显学号用int描述,姓名用字符串描述(本篇文章中不用char*来描述字符串,而是采用STL中string来描述),下面给出map描述代码:1.声明方式:Map<int,string>mapStudent;2.数据的插入在构造map容器后,我们就可以往里面插入数据了。这里讲三种插入数据的方法:第一种:用insert函数插入pair数据Map<int,string>mapStudent;mapStudent.insert(pair<int,string>(1,“student_one”));第二种:用insert函数插入value_type数据Map<int,string>mapStudent;mapStudent.insert(map<int,string>::value_type(1,“student_one”));第三种:用数组方式插入数据Map<int,string>mapStudent;mapStudent[1]=“student_one”;mapStudent[2]=“student_two”;3.map的大小在往map里面插入了数据,我们怎么知道当前已经插入了多少数据呢,可以用size函数:IntnSize=mapStudent.size();4.数据的遍历第一种:应用前向迭代器map<int,string>::iteratoriter;for(iter=mapStudent.begin();iter!=mapStudent.end();iter++)Cout<<iter->first<<””<<iter->second<<end;第二种:应用反相迭代器map