- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STL简析
next_permutation/pre_permutation 根据当前排列生成上一个或下一个排列 效率高,约是直接回溯的2倍。 int a[4] = {0,1,2,3}, count = 0; do{ count++; }while(next_permutation(a, a + 4)); 其他可能也有用的算法 is_heap, make_heap, push_heap, pop_heap,heap_sort nth_element partition/stable_partition copy / copy_if set_intersection, set_union, set_difference, set_symmectric_difference includes random_shuffle merge, inplace_merge partial_sort binary_search 注意点 效率:用还是不用?如果用,用什么? 销毁容器前delete容器中通过new获得的指针 使用“交换技巧”来修整过剩容量string().swap(a) 了解相等和等价的区别 a==b 与(!(ab) !(ba)) 严格弱序化: 永远让比较函数对相等的值返回false 避免原地修改set的键 对比map::operator[]和map-insert []先检查存在与否,不存在则插入默认值 erase-remove/erase-unique惯用法 count/find/binary_search/lower_bound/ upper_bound和equal_range的区别 OVER C++ 标准程序库(简体中文).pdf STL_Programmer_Guide.chm Felix_STL整理.rar (有点小错) chaeyeons stl.rar 深入: Effective STL STL源码剖析 Standard Template LibrarySTL简析 By Felix021 @什么是STL Standard Template Library标准模板库 包含可复用的(模板化的)容器、算法等。 容器(最常用的数据结构):存放数据 序列容器, vector, deque, list, ... 关联容器, map, set, ... *迭代器 算法:处理数据 查找, 排序, 统计, 堆, 集合, 排列... 效率,正确性,可读性,代码速度 什么是模板(Template) 抽象地看待代码,分离出变化的和不变的。 ~不变的:模板 ~变化的:模板参数 template typename T T add(T a, T b) { return (a + b); } ... cout add(1, 2) endl; cout add(1.1, 2.2) endl; 什么是迭代器(iterator) 定义(GOF):提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。 C++ Iterator Input Iterators(只读, e.g. istream_iterator封装cin) Output Iterators(只写, e.g. 封装cout) Forward Iterators(前向, e.g. 单链表) Bidirectional Iterators(双向, e.g. list) Random Access Iterators(双向, e.g. vector) *指针 *iter, iter-elem, iter++, iter--, iter+3 STL中的区间(range) [begin, end) 左闭右开 begin指向第一个元素 end 指向最后一个元素之后的那个空的位置 begin == end 表示空区间 e.g. sort(vec.begin(), vec.end()); sort(arr, arr + n); 比较函数 重载operator bool intgreater(const int a, const int b){ return (a b); } sort(a, a + 5, intgreater); ------------------------ struct T{ int v; bool operator(const T a)const{ return (v a.v); } } = T a, b; if(a b) ... ; 仿函数(functor, 函数对象) 重载()操作符的类 struct cmp{
您可能关注的文档
最近下载
- 交通运输行政执法人员考试题及答案 .pdf VIP
- 卸料平台专项施工措施(修).doc VIP
- 广播电视技术能手竞赛部分试题.pdf VIP
- 医疗机构从业人员行为规范.pptx VIP
- 第6单元 美丽乡村—我学会了吗 (课件)2025-2026学年度青岛版数学三年级上册.pptx VIP
- 22G101-1图集—混凝土结构施工图平面整体表示方法制图规则和构造详图(现浇混凝土框架、剪力墙、梁、板).pdf VIP
- 《古希腊哲学思想及其影响:大学西方文化教案》.doc VIP
- 山东-造价文件汇编.pdf VIP
- 牧场物语矿石镇的伙伴们攻略 [2].doc VIP
- 主题活动——1200张纸有多厚(课件)2025-2026学年度青岛版(六三)数学三年级上册.pptx VIP
文档评论(0)