摘要: iterator类是一个基类模板,可用于从它派生迭代器。不提供迭代器具有的任何功能,提供一些默认成员类型,这些并不是迭代器类型必须的,他们可能是有用的 阅读全文
posted @ 2020-04-23 01:29 坦坦荡荡 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 迭代器(Iterator)是指针的抽象,它允许程序员以相同的方式处理不同的数据结构(容器) 迭代器支持的一些基本操作: = 迭代器赋值 == 比较迭代器的相等性 != 比较迭代器的不等性 ++ 迭代器向后移动 -- 迭代器向前移动 * 解引用,返回迭代器指向的元素 迭代器搭起STL算法和容器之间的桥 阅读全文
posted @ 2020-04-23 01:19 坦坦荡荡 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 用法一:用在模板定义里,标明气候的模板参数是类型参数,此时可以与class互换 用法二:模板中标明“内嵌依赖类型名” 阅读全文
posted @ 2020-04-23 00:18 坦坦荡荡 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 类模板定义: 例如: 注意模板类函数类的声明与实现必须放在同一个.h文件内 阅读全文
posted @ 2020-04-22 22:42 坦坦荡荡 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 函数模板定义:(C++98添加关键字typename之前,c++使用class来创建模板) 举例: 注意:1.如果在全局域中声明了与模板参数(T)同名的对象函数或类型,则该全局名将被隐藏 2.函数模板定义中声明的对象或类型不能与模板参数(T)同名 3.模板类型参数名可以被用来指定函数模板的返回位 4 阅读全文
posted @ 2020-04-22 22:22 坦坦荡荡 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 1.冒泡排序 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 关于代码实现,两层循环(若N个数排序),外层冒泡轮数(n-1),里层依次比较(n-i), 阅读全文
posted @ 2020-04-22 16:51 坦坦荡荡 阅读(128) 评论(0) 推荐(0) 编辑
摘要: #pragma once class MyStack { public: MyStack(int size); //分配内存初始化栈空间,设定栈容量,栈顶 ~MyStack(); //回收栈空间内存 bool stackEmpty(); //判定栈是否为空,为空返回true,非空返回false bo 阅读全文
posted @ 2020-04-19 20:33 坦坦荡荡 阅读(152) 评论(0) 推荐(0) 编辑
摘要: #pragma once //这里实现的是环形队列 class MyQueue { public: MyQueue(int queueCapacity); //创建队列 virtual ~MyQueue(); //销毁队列 void ClearQueue(); //清空队列 bool QueueEm 阅读全文
posted @ 2020-04-19 17:45 坦坦荡荡 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 自定义windows消息 #define MY_MSG (WM_USER+1) //为了防止用户自定义消息ID与系统消息ID冲突,用户只能定义WM_USER(0x0400)以后的ID使用 PostThreadMessage 将一个队列消息放入(寄送)到指定线程的消息队列里,不等待线程处理消息就返回 阅读全文
posted @ 2020-04-19 09:10 坦坦荡荡 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 如果一个变量是全局的,那么所有线程访问的是同一份,某一个线程对其修改会影响其他所有线程。如果我们需要一个变量在每个线程中都能访问,并且值在每个线程中互不影响,这就是TLS。 线程局部存储在不同平台有不同的实现,可移植性不好。线程局部存储不难实现,最简单的办法是建立一个全局表,通过当前线程ID去查询相 阅读全文
posted @ 2020-04-18 23:25 坦坦荡荡 阅读(2319) 评论(0) 推荐(0) 编辑