[GeekBand] STL与泛型编程(2)】的更多相关文章

在C++语法的学习过程中,我们已经对模板有了基本的了解.泛型编程就是以模板为工具的.泛化的编程思想.本篇文章介绍了一些在之前的文章中没有涉及到的一些模板知识.泛型编程知识和几种容器.关于模板的一些重复知识在这里就不再进行赘述. 一.关于模板的知识点补充   1. 函数模板的参数推导与显式指定 通常情况下,我们一般采用参数的自动推导方式去使用函数模板.在自动推导时,为了确保推导的正确性,C++不允许任何形式的隐式类型转换. 这个限制就导致了如下的情况: template <class T> in…
本篇文章在上一篇文章的基础上进一步介绍一些常用的容器以及STL的一些深入知识. 一. Stack和Queue 栈和队列是非常常用的两种数据结构,由deque适配而来.关于数据结构的知识这里就不在介绍了,仅介绍STL中的成员方法. stack 的基本操作有:入栈,如例:s.push(x);出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素.访问栈顶,如例:s.top()判断栈空,如例:s.empty(),当栈空时,返回true.访问栈中的元素个数,如例:s.size().…
本篇文章主要介绍泛型算法中的变易.排序.数值算法. 一. 变易算法 所谓变易算法是指那些改变容器中的对象的操作. 1.1 copy组 template <class InputIterator, class OutputIterator> OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result); Copy操作是将两个输入迭代器之间的元素拷贝到输出迭代器处.注意拷贝时采用的是左对齐,…
1, 模板观念与函数模板 简单模板: template< typename T > T Function( T a, T b) {- } 类模板: template struct Object{---.}; 函数模板 template< class T> inline T Function( T a, T b){--} 不可以使用不同型别的参数来调用函数模板 可以使用class代替typename. 但不能使用struct代替typename 使用具体类型代替模板参数T叫实例化,…
本文参考文献::GeekBand课堂内容,授课老师:张文杰 :C++ Primer 11 中文版(第五版) page 37 :网络资料: 叶卡同学的部落格  http://www.leavesite.com/ 前言:本文主要通过关联容器set解释下仿函数的实现及工作原理. 一.STL六大组件简介 1.Containers(容器):各种数据结构,如Vector,List,Deque,Set,Map,用来存放数据2.Algorithms(算法):如. Sort,Search.3.Iterators(…
本文参考文献::GeekBand课堂内容,授课老师:张文杰 :C++ Primer 11 中文版(第五版) :网络资料: 叶卡同学的部落格  http://www.leavesite.com/ http://blog.sina.com.cn/s/blog_a2a6dd380102w73e.html 一.关于Vector的基本概念及相关算法简介 1.什么是vector? 简单的理解:数组! 进一步的理解:变长一维的动态数组,连续存放的内存块,堆内分配内存.支持[]操作(一会就会用到),支持下标操作…
本文参考文献::GeekBand课堂内容,授课老师:张文杰 :C++ Templates  15章节 :网络资料: http://blog.csdn.net/my_business/article/details/7891687 1.定义: 函数,类或者一些封装的通用算法中的某些部分会因为数据类型不同而导致处理或逻辑不同(而我们又不希望因为数据类型的差异而修改算法本身的封装时).traits会是一种很好的解决方案. 助教提示: 1.不要像用switch一样枚举各个类型,用traits用模板实现.…
part 1 C++模版简介 一,模版概观 1.模板 (Templates)是C++的一种特性,允许函数或类(对象)通过泛型(generic types)的形式表现或运行. 模板可以使得函数或类在对应不同的型别(types) 的时候正常工作,而无需为 每一个型别都写一份代码. 2.C++主要有两种类型的模板: (1)类模板(Class template): 使用泛型参数的类(classes with generic parameters) (2)函数模板(Function template):…
练习题目: struct Programmer{ Programmer(const int id, const std::wstring name): Id(id), Name(name){ } void Print() const { std::wcout<<L"["<<Id<<L"]: "<<Name<<std::endl; } int Id; std::wstring Name; }; //2, 定义…
9, 容器 Deque 双向队列 和vector类似, 新增加: push_front 在头部插入一个元素 pop_front 在头部弹出一个元素 Deque和vector内存管理不同: 大块分配内存 Stack 先进后出结构 只有一个出口 只能访问顶端元素, 不允许遍历 支持操作: push增加元素 pop移除元素 top获取顶端元素 实际底层使用Deque实现, 但也可以实际制定容器Container Queue 先进先出结构, 两个出口 不允许遍历 支持操作: push增加元素 pop移除…