
STL学习笔记
内容是关于学习和使用STL的点点滴滴
lwbeyond
这个作者很懒,什么都没留下…
展开
-
STL学习笔记----16.STL算法之 (数值算法)
一. 概述用来处理数值的算法,需要加上头文件 #includeaccumulate()组合所有元素(求总和,求乘积...)inner_product()组合两区间内的所有元素adjacent_difference()将每个元素和其前一元素组合partial_sum()将每个元素和其先前的所有元素组合二.原创 2012-03-08 13:54:28 · 2274 阅读 · 0 评论 -
STL学习笔记----15.STL算法之 (已序区间算法)
一. 概述都是针对已序区间执行的算法。binary_search()判断某区间内是否包含某个元素includes()判断某区间内的每一个元素是否都涵盖于另一区间中lower_bound()搜索第一个"大于等于给定值"的元素upper _bound()搜索第一个"大于给定值"的元素equal_range(原创 2012-03-08 11:52:21 · 1939 阅读 · 0 评论 -
STL学习笔记----14.STL算法之 (排序算法)
一. 概述sort()对所有元素排序stable_sort()对所有元素排序,并保持相等元素间的相对次序partial_sort()排序,直到前n个元素就位partial_sort_copy()排序,直到前n个元素就位,结果复制于它处nth_element()根据第n个位置进行排序partition原创 2012-03-08 10:50:25 · 2051 阅读 · 0 评论 -
STL学习笔记----13.STL算法之 (变序性算法)
一. 概述变序性算法改变元素次序,但不改变元素值。这些算法不能用于关联式容器,因为关联式容器中,元素有一定的次序。reverse()将元素的次序逆转reverse_copy()复制的同时,逆转元素顺序rotate()旋转元素次序rotate_copy()复制的同时,旋转元素顺序next_permutatio原创 2012-03-07 18:19:30 · 1506 阅读 · 0 评论 -
STL学习笔记----12.STL算法之 (移除性算法)
一. 概述移除性算法是在一区间内移除某些元素,这些算法并不能改变元素的数量,它们只是以逻辑上的思考,将原本置于后面的“不移除元素”向前移动,覆盖那些被移除元素而已。它们都返回新区间的逻辑终点。remove()将等于某特定值的元素全部移除remove_if()将满足某准则的元素全部移除remove_copy()将不等于某特定值的元素全部原创 2012-03-07 17:28:40 · 1781 阅读 · 0 评论 -
STL学习笔记----11.STL算法之 (变动性算法)
一. 变动性算法 copy()从第一个元素开始,复制某段区间copy _backward()从最后一个元素开始,复制某段区间transform()变动(并复制)元素,将两个区间的元素合并merge()合并两个区间swap_ranges()交换两区间内的元素fill()以给定值替换每一个元素原创 2012-03-07 16:09:39 · 1511 阅读 · 0 评论 -
STL学习笔记----10.STL算法之 (非变动性算法)
非变动性算法一. 概述非变动性算法既不改变元素次序,也不改变元素值。count()返回元素个数count()_if()返回满足某一条件的元素个数min_element()返回最小值max_element()返回最大值find()搜索等于某个值的第一个元素find_if()搜索满足某个原创 2012-03-06 18:12:24 · 1630 阅读 · 0 评论 -
STL学习笔记----9.STL算法之 for_each()
一. for_each()算法for_each (InputIterator beg, InputIterator end, UnaryProc op)1. 对区间[beg, end)中的每个元素elem调用,op(elem)。2. op的任何返回值都会被忽略。3. for_each()返回op仿函数的一个副本。4. 调用op的次数为[beg, end)的个数次。二.原创 2012-03-06 17:14:01 · 2355 阅读 · 0 评论 -
STL学习笔记----8.STL仿函数
一. 概念:函数对象function objects,又名仿函数,是一个定义了operator()操作的对象。class FunctionObjectType { public: void operator() { statements }};二. 仿函数当做排序准则:程序员经常需要将某些class objec原创 2012-03-06 14:41:08 · 2284 阅读 · 0 评论 -
STL学习笔记----7.STL迭代器
STL迭代器一. 迭代器类型Input迭代器 istreamOutput迭代器 ostreamForward迭代器Bidirectional迭代器 list, set, multiset, map,multimapRandom access迭代器 vector, de原创 2012-03-05 15:12:44 · 2126 阅读 · 0 评论 -
STL学习笔记----6.容器 map 和 multimap
一. Map与 Multimap 特点Map 和 Multimap 将(key/value) 一组当做元素,它们可以根据 key 的排序准则自动将元素排序。Multimap允许重复元素,map不允许重复。类型定义:typedef std::map > StringFloatMap; ...StringFloatMap coll;注意,两个>之间需加上一个空原创 2012-03-02 18:05:34 · 6521 阅读 · 0 评论 -
STL学习笔记----5.容器 set 和 multiset
一. Set 的特点Set 和 multiset 会根据特定的排序准则,自动将元素排序。两者不同处在于multiset允许元素重复而set不允许重复。优点:在搜索元素时具有良好的性能。限制:你不能直接改变元素值,因为这样会打乱原本正确的顺序,因此要改变元素值,必须先删除旧元素,再插入新元素。Set 和 multiset 通常以平衡二叉树来实现,如下图:原创 2012-03-02 15:20:42 · 4301 阅读 · 0 评论 -
STL学习笔记----4.容器 list
List 使用双向链表来管理元素。一. List 与 vector或deque的区别1.List 不支持随机存取。如果你要存取第5个元素,就必须从头开始数。2.任何位置插入和删除都很快。3.插入和删除不会造成其它元素pointers, references 和 iterators 失效。4.List 的迭代器是双向迭代器,所以凡是用到随机存取的迭代器的算法(原创 2012-02-29 18:03:24 · 2201 阅读 · 2 评论 -
STL学习笔记----3.容器 vector 和 deque
容器的 vector 和 deque,在操作方面比较相似,所以放在一起总结。除了共通操作外,它们还有自己的一些特点,具体如下:一. vectorvector 模塑出来一个动态数组,在末端添加和删除元素时,性能相当好,在前端或中部插入或删除元素时,性能不怎么样。1. vector 的容量vector 性能优异的原因是,就是分配了比其所容纳元素所需的,更多的内存空间。有两个原创 2012-02-29 15:08:52 · 2671 阅读 · 1 评论 -
STL学习笔记----2.容器的共通操作
每个容器都有很多操作,以下操作为所有容器共有的:一.构造,拷贝和析构ContType c 创建一个空容器,其中没有任何元素ContType c1(c2) 创建一个同种类形容器的一个copyContType c(beg,end) 创建一个容器,以区间[beg,end)做为元素初值原创 2012-02-28 18:10:44 · 2921 阅读 · 1 评论 -
STL学习笔记----1.概述
本系列是我学习 STL 的一些笔记,都是一些我工作中常用的主题。其中主要参考《C++标准程序库》这本书和一些网络上的博客。一.STL 组件1. 容器(Containers):用来管理某类对象的集合。2. 迭代器(Iterators):用来在一个对象群集的元素上进行遍历动件。迭代器的接口和一般指针差不多,以operator++累加,以operator* 提取所指的值。3.原创 2012-02-28 13:02:19 · 3519 阅读 · 3 评论