自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

耗纸的博客

没事看看书,学学习,扯扯淡

  • 博客(11)
  • 收藏
  • 关注

原创 STL与泛型编程<十四>:仿函数介绍

简介仿函数(functor)就是定义了operator()的一种型别(或实例化的对象),可以如下使用FunctionObjectType fo;...fo(...) //并不是使用函数fo(),而是调用fo的operator()函数明显其和函数的很像,只不过函数是在函数体内实现,而其实在operator()里实现相关功能,伪代码如下class FunctionObjectType{

2016-03-28 22:24:14 926

原创 STL与泛型编程<十二>:Stream(流)迭代器

ostream_iteratorostream迭代器可以将赋的值写入output stream中,它的实作机制与insert迭代器概念一致,唯一的区别在于ostream迭代器将赋值操作转换为operator<<,ostream迭代器的各个操作函数如下 其定义如下namespace std{ template<typename T, typename charT = char, typ

2016-03-28 21:08:40 804

原创 STL与泛型编程<十一>:Insert(安插)迭代器

介绍用来将“赋新值操作”转换为“安插新值”操作,通过这种迭代器,算法可以执行安插(insert)操作而非覆盖(overwrite)操作。所有insert迭代器都属于output迭代器。 - Insert迭代器的功能 通常算法会将数值赋值给标的迭代器,如copy()算法namespace std{ template<typename InputIterator, typename Out

2016-03-28 20:34:12 989

原创 STL与泛型编程<十>:迭代器适配器(Iterator Adapters)之逆向迭代器

此类迭代器可以使得算法能够以逆向(reverse mode)模式,安插模式(insert mode)进行工作,也可以流(streams)的模式搭配工作逆向迭代器reverse迭代器是一种适配器,重新定义递增运算和递减运算,使其行为正好倒置,所有标准容器都允许使用reverse迭代器来遍历元素,例子#include <iostream>#include <list> #include <itera

2016-03-27 18:20:42 398

原创 STL与泛型编程<九>:迭代器相关辅助函数

STL为迭代器提供了三个辅助函数:advance(),distance()和iter_swap()。前二者提供给所有迭代器一些原本只有随机迭代器才有的能力:前进或后退多个元素,及处理迭代器之间的距离。最后一个允许你交换两个迭代器的值advance()可使迭代器前进声明如下#include <iterator>void advance(InputIterator& pos, Dist n)使名为p

2016-03-27 17:28:14 649

原创 STL与泛型编程<八>:迭代器简介

总述所有容器都定义其各自的迭代器型别(iterator types),所以不需要专门的头文件,但有的迭代器需要,如逆向迭代器,被定义在#include中,迭代器是一种“能够遍历某个序列内所有元素”的对象,它可以透过一般指针一致的接口来完成自己的工作。其主要分为以下几种,见图 - input(输入)迭代器 input迭代器只能一次一个向前读取元素,按顺序一个个传回元素值。注意input迭代器只

2016-03-22 22:58:38 527

原创 STL与泛型编程<五>:Sets和Multisets

set和multiset会根据特定的排序准则排序,自动将元素进行排序,不同之处在于multiset允许元素重复而set不允许。 其声明如下namespace std{ template<class T, class Compare = less<T>, class Allocator = allocator<T> > class set; template<class

2016-03-07 18:36:18 792

原创 STL与泛型编程<四>:List

List使用一个双向链表来管理元素。 List的能力List的内部结构与vector和deque截然不同,因此区别也很显著,如下 1. List不支持随机存取。所以在List遍历是很缓慢的行为 2. 任何位置安插与删除元素非常快 3. 安插和删除元素并不会造成指向其他元素的各个pointer,reference,iterator失效 List提供的成员函数也可以看出来它和vector以及d

2016-03-06 20:39:02 469

原创 STL与泛型编程<三>:deque

STL与泛型编程<三>:deque和vector很相似,也采用动态数组来管理元素,提供随机存取,逻辑结构如下, deque通常实作为一组独立区块,第一块朝某方向扩展,最后一块区块朝另一方向扩展 deque的能力与vector相比,deque的功能不同之处在于 1. 两段都能快速安插和溢出元素; 2. 存取元素时,deque的内部结构多一个间接过程,所以元素存取比vector慢; 3.

2016-03-06 17:55:57 542

原创 STL与泛型编程<二>:Vector

Vector模拟一个动态数组,其内存模型如下 Vector的能力vector将元素复制到内部的dynamic array中,是一个有序群集;vector支持随机存取,vector迭代器是一个随机存取迭代器 ,所以对任何一个STL算法都可以。大小(size)和容量(capacity)为什么vector比容器的通用操作多了个capacity()?就是因为 vector优异性能就是配置比其容纳的元素所

2016-03-06 16:56:19 529

原创 STL与泛型编程<一>:容器的共通能力和共通操作

STL与泛型编程<一>:容器的共通能力和共通操作容器的共通能力所有的STL都必须满足一些共同的条件,三个最核心的能力是 1. “所有容器提供的都是”value语意”而非”reference语意”。这意味着STL容器所容纳的是你所安插的对象值,若要实现reference语意,可以让容器容纳指针 2. 总体而言,所有元素形成一个次序。每个容器都提供了“可返回迭代器”的函数 3. 一般而言,各项操作

2016-03-06 10:23:29 427

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除