STL
读书与远方
这个作者很懒,什么都没留下…
展开
-
STL学习笔记----12.STL算法之 (移除性算法)
一. 概述 移除性算法是在一区间内移除某些元素,这些算法并不能改变元素的数量,它们只是以逻辑上的思考,将原本置于后面的“不移除元素”向前移动,覆盖那些被移除元素而已。它们都返回新区间的逻辑终点。 remove() 将等于某特定值的元素全部移除 remove_if() 将满足某准则的元素全部移除 remove_copy() 将不等于某特定值的元素原创 2013-10-17 14:47:40 · 803 阅读 · 0 评论 -
STL学习笔记----2.容器的共通操作
每个容器都有很多操作,以下操作为所有容器共有的: 一.构造,拷贝和析构 ContType c 创建一个空容器,其中没有任何元素 ContType c1(c2) 创建一个同种类形容器的一个copy ContType c(beg,end) 创建一个容器,以区间[beg,end)做为元素初值原创 2013-10-29 14:34:07 · 602 阅读 · 0 评论 -
STL学习笔记----1.概述
本系列是我学习 STL 的一些笔记,都是一些我工作中常用的主题。其中主要参考《C++标准程序库》这本书和一些网络上的博客。 一.STL 组件 1. 容器(Containers):用来管理某类对象的集合。 2. 迭代器(Iterators):用来在一个对象群集的元素上进行遍历动件。迭代器的接口和一般指针差不多,以operator++累加,以operator* 提取所指的值。 3.原创 2013-10-29 14:34:35 · 588 阅读 · 0 评论 -
STL学习笔记----5.容器 set 和 multiset
一. Set 的特点 Set 和 multiset 会根据特定的排序准则,自动将元素排序。两者不同处在于multiset允许元素重复而set不允许重复。 优点: 在搜索元素时具有良好的性能。 限制: 你不能直接改变元素值,因为这样会打乱原本正确的顺序,因此要改变元素值,必须先删除旧元素,再插入新元素。 Set 和 multiset 通常以平衡二叉树来实现,如下图:原创 2013-10-29 14:31:55 · 756 阅读 · 0 评论 -
STL学习笔记----4.容器 list
List 使用双向链表来管理元素。 一. List 与 vector或deque的区别 1.List 不支持随机存取。如果你要存取第5个元素,就必须从头开始数。 2.任何位置插入和删除都很快。 3.插入和删除不会造成其它元素pointers, references 和 iterators 失效。 4.List 的迭代器是双向迭代器,所以凡是用到随机存取的迭代器的算法(原创 2013-10-29 14:33:03 · 751 阅读 · 0 评论 -
STL学习笔记----3.容器 vector 和 deque
容器的 vector 和 deque,在操作方面比较相似,所以放在一起总结。除了共通操作外,它们还有自己的一些特点,具体如下: 一. vector vector 模塑出来一个动态数组,在末端添加和删除元素时,性能相当好,在前端或中部插入或删除元素时,性能不怎么样。 1. vector 的容量 vector 性能优异的原因是,就是分配了比其所容纳元素所需的,更多的内存空间。有两个原创 2013-10-29 14:33:37 · 657 阅读 · 0 评论 -
C++学习笔记(一) 序列式容器及适配器
2012-07-24 14:12:10 我来说两句 收藏 我要投稿 容器是存储数据的集合,序列容器则是指明它的存储方式为序列式存储。C++有三种序列式容器:vector,deque,list。其中,前两种都是顺序存储方式,第三种则是指链表。为了实现算法和容器的分离,STL提供的这几个容器都只实现了很少的操作,例如插入,删除,以及对容器本身容量的设置等,而像排序,查找之类的操作则都是原创 2013-11-02 19:25:09 · 727 阅读 · 0 评论 -
Vector 嵌套 Vector
#include #include using namespace std; int main() { int a[]={1,2,3,4,5,6,7,8,9,10}; vector temp1(a,a+5),temp2(a+5,a+10); //创建两个vector对象,使用内容方式 vector > vec; vec.push_back(temp原创 2013-11-11 21:46:37 · 6854 阅读 · 2 评论 -
C++模板学习
C++模板学习 1. 模板的概念。 我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。 //函数1. int max(int x,int y); {return(x>y)?x:y ;}原创 2013-11-13 10:53:27 · 461 阅读 · 0 评论 -
STL学习笔记----16.STL算法之 (数值算法)
一. 概述 用来处理数值的算法,需要加上头文件 #include accumulate() 组合所有元素(求总和,求乘积...) inner_product() 组合两区间内的所有元素 adjacent_difference() 将每个元素和其前一元素组合 partial_sum() 将每个元素和其先前的所有元素组合 二.原创 2013-10-17 14:39:48 · 705 阅读 · 0 评论 -
STL学习笔记----6.容器 map 和 multimap
一. Map与 Multimap 特点 Map 和 Multimap 将(key/value) 一组当做元素,它们可以根据 key 的排序准则自动将元素排序。 Multimap允许重复元素,map不允许重复。 类型定义: [cpp] view plaincopyprint? typedef std::map<std::string, float, std原创 2013-10-17 15:01:55 · 772 阅读 · 0 评论 -
STL学习笔记----11.STL算法之 (变动性算法)
一. 变动性算法 copy() 从第一个元素开始,复制某段区间 copy _backward() 从最后一个元素开始,复制某段区间 transform() 变动(并复制)元素,将两个区间的元素合并 merge() 合并两个区间 swap_ranges() 交换两区间内的元素 fill() 以给定值替换每一个元素原创 2013-10-17 14:50:09 · 608 阅读 · 0 评论 -
STL学习笔记----10.STL算法之 (非变动性算法)
非变动性算法 一. 概述 非变动性算法既不改变元素次序,也不改变元素值。 count() 返回元素个数 count()_if() 返回满足某一条件的元素个数 min_element() 返回最小值 max_element() 返回最大值 find() 搜索等于某个值的第一个元素 find_if() 搜索满足某个原创 2013-10-17 14:55:58 · 729 阅读 · 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)的个数次。原创 2013-10-17 14:56:35 · 693 阅读 · 0 评论 -
STL学习笔记----8.STL仿函数
一. 概念: 函数对象function objects,又名仿函数,是一个定义了operator()操作的对象。 [cpp] view plaincopyprint? class FunctionObjectType { public: void operator() { statements }原创 2013-10-17 14:57:32 · 691 阅读 · 0 评论 -
STL学习笔记----7.STL迭代器
STL迭代器 一. 迭代器类型 Input迭代器 istream Output迭代器 ostream Forward迭代器 Bidirectional迭代器 list, set, multiset, map,multimap Random access迭代器 vector, de原创 2013-10-17 15:01:28 · 935 阅读 · 0 评论 -
STL学习笔记----15.STL算法之 (已序区间算法)
一. 概述 都是针对已序区间执行的算法。 binary_search() 判断某区间内是否包含某个元素 includes() 判断某区间内的每一个元素是否都涵盖于另一区间中 lower_bound() 搜索第一个"大于等于给定值"的元素 upper _bound() 搜索第一个"大于给定值"的元素 equal_range(原创 2013-10-17 14:41:56 · 662 阅读 · 0 评论 -
STL学习笔记----14.STL算法之 (排序算法)
一. 概述 sort() 对所有元素排序 stable_sort() 对所有元素排序,并保持相等元素间的相对次序 partial_sort() 排序,直到前n个元素就位 partial_sort_copy() 排序,直到前n个元素就位,结果复制于它处 nth_element() 根据第n个位置进行排序 partition原创 2013-10-17 14:45:17 · 657 阅读 · 0 评论 -
STL学习笔记----13.STL算法之 (变序性算法)
一. 概述 变序性算法改变元素次序,但不改变元素值。这些算法不能用于关联式容器,因为关联式容器中,元素有一定的次序。 reverse() 将元素的次序逆转 reverse_copy() 复制的同时,逆转元素顺序 rotate() 旋转元素次序 rotate_copy() 复制的同时,旋转元素顺序 next_permutatio原创 2013-10-17 14:46:39 · 748 阅读 · 0 评论 -
c++模板详解
c++ 模板分为2类: 1. 函数模板 格式:template 反回类型函数名(参数列表){函数体} 比如: template void swap(T& a, T& b){} 调用时: int a,b; swap(a,b); double d1,d2; swap(d1,d2); 但是下面写法是错误的: swap(int,int):不能在函数调用的参数中原创 2013-11-13 11:05:33 · 1080 阅读 · 0 评论