资源描述:
《达内培训内部STL》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、STLSTL标准模板库(StandardTemplateLibrary)效率是STL设计的关键考虑因素STL包含很多最流行的数据结构,例如容器,并且提供了多种常用的算法来处理这些容器中的数据STL的三种关键组件容器迭代器算法类模板通常称为容器,函数模板都是通用算法类模板主要是对数据结构的设计函数模板主要是通用算法的设计容器标准容器序列容器关联式容器迭代器…容器适配器(特殊容器),函数对象内存分配器…迭代器迭代器在很多方面和指针类似,也是用于指向容器中的元素迭代器存有它们所指的容器的状态信息,即迭
2、代器对每种类型的容器都有一个实现迭代器的本质是封装了的指针,支持++*->==!=运算,大部分还支持--操作容器类基本都提供成员函数begin和end,begin函数返回一个指向容器中第一个元素的迭代器,end返回一个指向容器最后一个的下一个元素的迭代器STL中,通常用两个迭代器表示一个范围,这个范围是个半开半闭区间标准容器序列容器的共性vectordequelist关联窗口的共性setmultisetmapmultimap特殊容器(容器适配器)stackqueuepriority_queue标
3、准容器的共性vector,deque,list,set/map,multi...构造函数:无参构造,拷贝构造,区间构造(两个迭代器表示的两个位置)析构迭代器相关:正向.begin(),.end()反向.rbegin(),.rend()iterator,reverse_iterator,const_iterator,const_reverse_iterator*,->,=,++,==,!=--插入:.insert(pos,element),其中pos表示插入位置,是个迭代器标准容器的共性插入:.i
4、nsert(pos,element),其中pos表示插入位置,是个迭代器删除:.erase(pos),.erase(pos_beg,pos_end)清除:.clear()大小:.size(),.max_size(),.empty()交换:.swap(c2),swap(c1,c2)成员函数和非成员函数在使用时,优先考虑使用成员函数。运算符:=,>,<,>=,<=,==,!=另:标准库容器并没有严格检查错误,所以用错的后果是未知的。标准库容器共性举例。序列式容器的共性vector,deque,lis
5、t序列式容器属于标准容器,所以具体标准容器所有的共性。除此之外,序列式有以下共性:构造函数:指定元素个数和初始值(初始值默认为零初始化)插入:.insert(pos,n,element),.insert(pos,pos_beg,pos_end)赋值:.assign(n,element),.assign(pos_beg,pos_end)调整:.resize(n,element=零初始化)首尾:.front(),.back()注:返回的是首尾元素的引用增删:.push_back(element),.
6、pop_back()只删除,返回void序列式容器共性举例。序列式容器的个性介绍vector.capacity();//取得当前分配了多少容量.reserve(n);//约定容量[下标];//如同数组,支持下标操作,operator[](i)即使越界也不检查.at(下标);//用下标访问,检查越界迭代器在使用时需要特别注意,在进行插入或删除后,之前获得的迭代器可能会失效。vector使用举例dequedeque(double_ended_queue)由数组实现,支持[]下标操作,如vector.
7、at(i)会做越界检查。没有capacityreserve操作可从头增删:.push_front(element).pop_front();deque举例listlist(双向链表实现)增删.push_front(element),.pop_front(),.remove(element)//删除等于指定值的所有元素,需要支持==运算符不支持下标[]除重:.unique()相邻的重复元素只保留一个排序:.sort(compare_func=less)默认用小于符号比较,从小到大排序greater
8、<类型>为从大到小排序函数倒置:.reverse()颠倒链表中元素顺序转移.splice(pos,list2),.splice(pos,list2,pos2),.splice(pos,list2,pos_beg,pos_end)归并:.merge(list2)list举例关联式容器共性二叉树实现,会根据关键字自动排序。个性少。set,multiset,map,multimap