《项目中STL的使用.ppt》由会员分享,可在线阅读,更多相关《项目中STL的使用.ppt(21页珍藏版)》请在三一办公上搜索。
1、C+项目中STL的使用,Click to add Title,4个点/天*5天,如何自动分组,算法?,界面,逻辑?,自动分组结果,输入-排序-输出(传统实现),无循环,输入-排序-输出(STL实现),STL:Standard Template Library。常用数据结构与算法的集合。1998年,STL成为C+标准库的一部分。,STL是什么,Alexander Stepanov(STL之父),70年代,思想1987,继承1998,标准现在,泛型,msvcr80.dllmsvcp80.dllmfc80u.dll,STL的历史及实现版本,顺序容器,1,关联容器,2,1)vector:动态增长数组。
2、,2)list:双向链表。,3)deque:类似vector,两端增删效率高,1)set 键集合。,黑名单,2)map 键值对集合。,英文词典,建议1:用vector代替传统数组!,适配器容器,3,1)queue,stack,priority_queue 用别的容器适配而成。,查找快,STL容器,容器比较,初始化,1,插入与删除,2,大小与位置,3,遍历,4,容器常用操作,set与map,1,list,2,c.remove(val)/移除所有值为val的元素c.unique()/移除重复元素c.sort()/排序c.reverse();/将元素反序,容器特殊操作,1.不同容器上支持的迭代器功能
3、强弱有所不同。2.容器的迭代器的功能强弱,决定了该容器是否支持STL中的某种算法。例:排序算法-随机 Reverse算法双向,只读,只写,读写,前向,读写,双向,读写,随机,迭代子,Insert iterator,1,Stream iterator,2,Reverse Iterator,3,概念:提供iterator相同的接口,但是改变内部的实现方法,1)back_inserter,2)front_inserter,3)inserter,1)istream_iterator,2)ostream_iterator,1)vector:reverse_iterator,迭代子适配器,#include
4、#include,查找(13个),排序整序(14个),删除替换(15个),排列组合(2个),算术(4个),生成异变(6个),关系(8个),集合(4个),堆(4个),70个标准算法,标准算法,13个,如何选择?,查找算法,建议2:用算法代替循环!,7个,如何选择?,排序算法,标准库中预定义函数对象,1,#include,1)算术函数对象2)关系函数对象3)逻辑函数对象,自定义函数对象,2,?1)姓名查找2)成绩排前三,函数对象,一元函数对象,二元函数对象,建议3:用函数对象代替函数指针!,自定义函数对象,string常用成员函数substr length find rfindfind_first_of erase,还缺少什么?送代码:strutil.h cpp,建议4:用string代替char*,CString与string如何转化?,界面层使用CString业务层使用string,string,stream,网站:http:/,STL相关书籍,