随笔分类 -  STL

摘要:反转迭代器顾名思义,反向操作容器,而插入迭代器是将迭代器的赋值操作转换为push_back(),push_front(),insert()操作。插入迭代器要求容器必须包含对应的push_back(),push_front(),insert()操作,这样才能对容器进行插入。插入迭代器分三种 back... 阅读全文
posted @ 2014-11-18 18:43 struggle_time 阅读(1024) 评论(0) 推荐(0) 编辑
摘要:重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待。这是通过重载类的operator()来实现的。 函数对象更重要的作用是实现函数回调,可以替代指针实现函数回调。定义如下:struct int_max{ int operator()(int x,int y) { return x>y?x:y; }}; 调用时生成一个对象: int_max int_max1; ... 阅读全文
posted @ 2013-09-28 10:38 struggle_time 阅读(691) 评论(0) 推荐(0) 编辑
摘要:STL中算可以分为三种, 1、变序型队列算法,可以改变容器内的数据; 2、非变序型队列算法,处理容器内的数据而不改变他们 ; 3、通用数值算法,这涉及到很多专业领域的算术操作,这里不做介绍。 第一是变序型算法,这种算法可以改变容器内的数据,而且可以只对容器的一部分数据进行操作。常用的有copy,reverse,swap,replace等,用法如下: 首先看看copy函数,是将某一范围的数据拷贝到新的容器中_OutIt copy(_InIt _First, _InIt _Last,_OutIt _Dest); // copy [_First, _Last) to [_Dest... 阅读全文
posted @ 2013-09-27 17:54 struggle_time 阅读(842) 评论(0) 推荐(0) 编辑
摘要:栈stack 、队列queue 和优先级priority_queue 三者比较 默认下stack 和queue 基于deque 容器实现,priority_queue 则基于vector 容器实现。 stack 先进后出 queue 先进先出 priority_queue 按优先级出队 代码示例如下: 1 #include "iostream" 2 using namespace std; 3 #include "string" 4 #include "stack" 5 #include "queue" 6 7 i 阅读全文
posted @ 2013-09-26 17:58 struggle_time 阅读(378) 评论(0) 推荐(0) 编辑
摘要:Maps是一种关联式容器,包含“关键字/值”对。Multimaps和maps很相似,但是MultiMaps允许重复的元素。 简单介绍:1、声明,首先包含头文件 “map” map test1,test2;// map ::iterator it1,it2;//迭代器 multimap test3; multimap ::iterator it3;2、插入数据,可使用三种方法: 第一种,使用pair函数 test1.insert(pair(1,"song")); test1.insert(pair(2,"zhang")); test1.insert... 阅读全文
posted @ 2013-09-26 17:29 struggle_time 阅读(361) 评论(0) 推荐(0) 编辑
摘要:集合(Set)是一种包含已排序对象的关联容器。多元集合(MultiSets)和集合(Sets)相像,只不过支持重复对象,其用法与set基本相同。 用法介绍 1.insert()函数 首先把头文件set包含进去#include "set" set test1; set ::iterator it1; multiset test2; multiset ::iterator it2; ////////////////////////////////////////////////////////////////////////// //输入 it... 阅读全文
posted @ 2013-09-26 14:55 struggle_time 阅读(390) 评论(0) 推荐(0) 编辑
摘要:看这一节,是为了下一节的使用,在ogre3d里有些操作要使用到deque。C++ Deque(双向队列) 的使用 Deque结合了vector 和list 优缺点,是一种使用简单的容器。 deque 的特点: (1) 随机访问方便,即支持[ ] 操作符和vector.at() ,但性能没有vector 好; (2) 可以在内部进行插入和删除操作,但性能不及list ; (3) 可以在两端进行push 、pop ; (4) 相对于verctor 占用更多的内存。 常用的函数和list的基本相同,除了个别的几个,如 1、创建一个新双向队列 ,构造函数很... 阅读全文
posted @ 2013-09-12 00:00 struggle_time 阅读(444) 评论(0) 推荐(0) 编辑
摘要:List --- 双向列表 List是线性列表结构,数据查找需要一个接一个,不能直接得到元素地址,检索时间与目标元素的位置成正比。但是插入数据比较快,可以在任何位置插入数据或者删除数据。list特点是: (1)不使用连续的内存空间这样可以随意地进行动态操作; (2)可以在内部任何位置快速地插入或删除,当然也可以在两端进行push和pop 。 (3)不能进行内部的随机访问,即不支持[ ] 操作符和vector.at() ;大多数函数和vector的类似,这里就不解释了,有几个不一样的如下: merge() 合并两个list --- 链接之后会把第二个链表删除掉 void merg... 阅读全文
posted @ 2013-09-08 22:19 struggle_time 阅读(799) 评论(0) 推荐(0) 编辑
摘要:C++STL(Standard Template Library)标准模板库是通用类模板和算法的集合。包含一些标准的数据结构的实现如queues(队列),lists(链表),stacks(栈)等。STL提供了以下三类数据结构的实现: 标准容器类:顺序性容器vector从后面快速插入和删除,直接访问任何元素deque从前面或后面快速插入和删除,直接访问任何元素list双链表,从任何地方快速插入和删除容器适配器statck后进先出queue先进后出priority_queue最高优先级元素总是第一个出列关联容器set快速查找,不允许重复值multiset快速查找,允许重复值map一对多映射,基于. 阅读全文
posted @ 2013-09-07 19:53 struggle_time 阅读(811) 评论(0) 推荐(0) 编辑