码迷,mamicode.com
首页 > 其他好文 > 详细

iterator_category

时间:2017-11-04 11:13:18      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:迭代器   成员   oid   tor   inter   cout   种类型   dom   int   

/*
* 迭代器类型
* 1. input ierator 
* 2. write iterator
* 3. forward iterator 在迭代器所形成的区间上进行读写操作
* 4. bidirectional iterator 可双向移动
* 5. random access iterator
*/

// 在执行时期决定使用哪一个版本会影响程序效率,最好在编译期选择正确的版本,重载机制可以实现这个目标

// 任何一个迭代器,其类型永远应该落在“该迭代器所隶属之各种类型中最强化的那个”
// STL算法的一个命名规则:以算法所能接受之最地接迭代器类型来为其迭代器性别参数命名
#pragma once

template <class Category, 
		   class T,
		   class Distance = ptrdiff_t,
		   class Pointer = T*,
			class Reference = T&>

struct iterator
{
	typedef Category iterator_category;
	typedef T value_type;
	typedef Distance difference_type;
	typedef Pointer pointer;
	typedef Reference reference;
};
// 继承关系的灵活应用
// class只作标记,不需要任何成员
struct B{};
struct C : public B{};
struct D : public C{};

template <class TT>
void fun(TT& p, B b)
{
	cout << "B version" << endl;
}

template <class TT>
void fun(TT& p, D d)
{
	cout <<"D version" <<endl;
}

int main()
{
	int nn = 10;
	fun(nn, B());
	fun(nn, C());
	fun(nn, D());

	return 0;
}

 

iterator_category

标签:迭代器   成员   oid   tor   inter   cout   种类型   dom   int   

原文地址:http://www.cnblogs.com/xiaobingqianrui/p/7781229.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!