- 博客(447)
- 资源 (4)
- 收藏
- 关注
原创 Go结构体
struct类型是值类型 Go语言没有class类型,只有struct类型 定义 var stu Student var stu *Student = new (Student) var stu *Student = &Student{} golang中的struct没有构造函数,一般可以使用工厂模式来解决这个问题 Package model type studen...
2018-06-22 11:41:13
646
原创 Go语言插入排序(包括shell希尔排序)
package main import ( "fmt" ) /* 插入排序不适合对于数据量比较大的排序应用。但是,如果需要排序的数据量很小,比如量级小于千,那么插入排序还是一个不错的选择。 插入排序在工业级库中也有着广泛的应用,在STL的sort算法和stdlib的qsort算法中,都将插入排序作为快速排序的补充,用于少量元素的排序(通常为8个或以下) */ func insert_s...
2018-06-21 18:26:49
785
原创 Go语言写的选择排序
package main import( “fmt” ) //选出最大的排到最后面 func select_sort(a []int){ index := 0 for i := 0; i < len(a)-1; i++{//外层循环(冒泡和选择排序)是从0到len-2 index = len(a) - 1 - i//默认每次排序完最大元素的下标是未排序的最后一个 ...
2018-06-20 21:31:44
863
原创 使用Go语言写的冒泡排序(4种写法)
package main import( "fmt" ) //用于计数排序中访问了多少次序列 var cnt int= 0 //最原始的冒泡排序 func buble_sort(a []int){ cnt = 0 for i := 0; i < len(a)-1; i++ { for j := 0; j < len(a)-1-i; j++...
2018-06-20 19:28:34
2013
原创 Go语言的HelloWorld
最小结构 package main//声明包--没有分号,编译器级别自动添加分号,表明该文件里的函数属于哪一个包 import (//导入包--程序中需要使用哪些包就需要事先导入。import导入的包可以用小括号括起来,小括号后面没有分号 "fmt"//常用于输入输出 //多个包之间直接换行,不需用逗号或者分号 ) func main(){//所有的可执行程序都需要一个m...
2018-03-10 18:14:48
1438
原创 Markdown语法
欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I...
2018-03-10 15:25:55
313
转载 44STL之遍历算法
STL之遍历算法STL之遍历算法 for_each transform 1.for_each()for_each: 用指定函数依次对指定范围内所有元素进行迭代访问。该函数不得修改序列中的元素。void show(const int &iItem) { cout << iItem; } main() { int iArray[] = {0,1,2,3,4}; vector<i
2017-06-21 10:45:25
581
转载 43STL之集合算法
STL之集合算法set_union(),set_intersection(),set_difference()set_union: 构造一个有序序列,包含两个有序序列的并集。 set_intersection: 构造一个有序序列,包含两个有序序列的交集。 set_difference: 构造一个有序序列,该序列保留第一个有序序列中存在而第二个有序序列中不存在的元素。vector<int>
2017-06-21 10:43:41
519
转载 42STL之算术和生成算法
STL之算术和生成算法STL之算术和生成算法 accumulate fill 综合代码 1.accumulate()accumulate: 对指定范围内的元素求和,然后结果再加上一个由val指定的初始值。 #include<numeric> vector<int> vecIntA; vecIntA.push_back(1); vecIntA.push
2017-06-21 10:21:08
494
转载 41STL之拷贝和替换算法
STL之拷贝和替换算法STL之拷贝和替换算法 copy replace replace_if swap 综合代码 1.copy()vector<int> vecIntA; vecIntA.push_back(1); vecIntA.push_back(3); vecIntA.push_back(5); vecIntA.push_back(7); vecIntA.push_back(9);vector
2017-06-21 10:19:38
564
转载 40STL之排序算法
STL之排序算法STL之排序算法 merge sort random_shuffle reverse 综合代码 1.merge()以下是排序和通用算法:提供元素排序策略 merge: 合并两个有序序列,存放到另一个序列。 例如: vecIntA,vecIntB,vecIntC是用vector<int>声明的容器,vecIntA已包含1,3,5,7,9元素,vecIntB已包含2,4,6,
2017-06-21 10:15:36
411
转载 39STL之查找算法
STL之查找算法STL之查找算法 adjacent_find binary_search count count_if find find_if 综合代码 1.adjacent_find()在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器。否则返回past-the-end。vector<int> vecInt; vecInt.push_back(1
2017-06-21 10:03:54
452
转载 38STL之设计理念
STL之设计理念 STL的容器通过类模板技术,实现数据类型和容器模型的分离。 STL的迭代器技术实现了遍历容器的统一方法;也为STL的算法提供了统一性 STL的函数对象实现了自定义数据类型的算法运算。#include <iostream> using namespace std;#include "string" #include <vector> #include <list> #include
2017-06-21 09:54:42
432
转载 37STL之函数适配器
STL之函数适配器STL之函数适配器 理论知识 常用函数适配器 典型案例 预定义函数对象和适配器案例代码 1.理论知识2.常用函数适配器标准库提供一组函数适配器,用来特殊化或者扩展一元和二元函数对象。常用适配器是:1绑定器(binder):binder通过把二元函数对象的一个实参绑定到一个特殊的值上,将其转换成一元函数对象。C++标准库提供两种预定义的binder适配器:bind1st和bind2n
2017-06-21 09:48:09
550
转载 36STL之函数对象和谓词
STL之函数对象和谓词STL之函数对象和谓词 函数对象 谓词 一元函数对象案例 一元谓词案例 二元函数对象案例 二元谓词案例 综合示例代码 预定义函数对象 1算术函数对象 2关系函数对象 3逻辑函数对象 1.函数对象重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一
2017-06-21 09:47:42
575
转载 35STL之算法基础
STL之算法基础STL之算法基础 概述 分类 常见算法 1查找算法13个判断容器中是否包含某个值 2排序和通用算法14个提供元素排序策略 3删除和替换算法15个 4排列组合算法2个提供计算给定集合按一定顺序的所有可能排列组合 5算术算法4个 6生成和异变算法6个 7关系算法8个 8集合算法4个 9堆算法4个 常用算法汇总 1.概述 算法部分主要由头文件<algorithm>,<numeric>和<f
2017-06-20 23:14:19
511
转载 34STL之容器小结
STL之容器小结一、理论提高:所有容器提供的都是值(value)语意,而非引用(reference)语意。容器执行插入元素的操作时,内部实施拷贝动作。所以STL容器内存储的元素必须能够被拷贝(必须提供拷贝构造函数)。#define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std; #include "vector"clas
2017-06-20 21:31:21
446
转载 33STL之Map和multimap容器
STL之Map和multimap容器STL之Map和multimap容器 简介 对象的拷贝构造和赋值 插入与迭代器 对象的拷贝构造和赋值 大小 删除 查找 1.简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对。它提供基于key的快速检索能力。 map中key值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。 map的具
2017-06-20 21:20:29
624
转载 32STL之Set和multiset容器
STL之Set和multiset容器STL之Set和multiset容器 setmultiset的简介 对象的默认构造 插入与迭代器 元素排序 函数对象functor的用法 set对象的拷贝构造与赋值 大小 删除 查找 pair的使用 小结 1.set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入
2017-06-20 20:57:40
504
转载 31STL之优先级队列priority_queue
STL之优先级队列priority_queueSTL之优先级队列priority_queue 简介 示例代码1.简介 最大值优先级队列、最小值优先级队列 优先级队列适配器 STL priority_queue 用来开发一些特殊的应用 2.示例代码int main(void) { priority_queue<int> p1; priority_queue<int, vector<in
2017-06-20 20:14:00
515
转载 30STL之List容器
STL之List容器STL之List容器 简介 对象的默认构造 头尾的添加移除操作 数据存取 迭代器 对象的带参数构造 赋值 大小 插入 删除 反序排列 小结 1.简介 list是一个双向链表容器,可高效地进行插入删除元素。 list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符。It++(ok) it+5(err) #include <list> 2.对象的默认构造list采用采
2017-06-20 19:53:59
400
转载 29STL之Queue
STL之QueueSTL之Queue 简介 对象的默认构造 push与pop方法 对象的拷贝构造与赋值 数据存取 大小 示例代码 1.简介 queue是队列容器,是一种“先进先出”的容器。 queue是简单地装饰deque容器而成为另外的一种容器。 #include <queue> 2.对象的默认构造queue采用模板类实现,queue对象的默认构造形式:queue<T> queT; 如:que
2017-06-20 19:39:40
453
转载 28STL之Stack
STL之StackSTL之Stack 简介 stack对象的默认构造 stack的push与pop方法 对象的拷贝构造与赋值 数据存取 stack的大小 1.简介 stack是堆栈容器,是一种“先进后出”的容器。 stack是简单地装饰deque容器而成为另外的一种容器。 #include <stack> 2.stack对象的默认构造stack采用模板类实现, stack对象的默认构造形式: st
2017-06-20 19:36:11
489
转载 27STL之Deque容器
STL之Deque容器STL之Deque容器 简介 deque对象的默认构造 末尾的添加移除操作 数据存取 deque与迭代器 deque对象的带参数构造 赋值 大小 插入 1.简介 deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的。 deque在接口上和vector非常相似,在许多操作的地方可以直接替换。
2017-06-20 19:31:10
521
转载 26STL之Vector
STL之VectorSTL之Vector 简介 对象初始化 容器大小 尾部添加和移除 数据存取 迭代器 1基本原理 2双向迭代器 3随机访问迭代器 4与vector的配合使用 插入 删除 相关示例代码 1.简介 vector是将元素置于一个动态数组中加以管理的容器。可以随机存取元素(支持索引值直接存取,用[]操作符或at()方法,还支持迭代器方式存取)。 vector尾部添加或移除元素非常快
2017-06-20 19:07:10
419
转载 25STL之String类型
STL之String类型STL之String类型 String概念 初始化构造函数 存取字符 和char类型的转换 比较操作 字符串连接 查找和替换 删除和插入 算法相关 1.String概念 string是STL的字符串类型,通常用来表示字符串。而在使用string之前,字符串通常是用char*表示的。 string和char*的区别 string是一个类, char*是一个指向字符的指针。
2017-06-20 18:55:39
797
转载 24STL理论基础
STL理论基础STL理论基础 基本概念 STL的优势 容器 容器的分类主要有两种 迭代器 算法 c标准库 C标准库的内容分为10类 模板回顾 简单示例代码 1.基本概念STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。虽然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。 STL的从广义上讲分为三部分:alg
2017-06-20 18:54:51
513
转载 23IO流
IO流IO流 流类库结构 标准IO 1标准输入 2标准输出 文件IO 1文件流及其对象 2文件的基本操作 3对ASCII文件的操作 4对二进制文件的操作 1.流类库结构程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件。C++输入输出包含以下三个方面的内容: 对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称
2017-06-20 11:17:58
974
转载 22异常处理
异常处理异常处理 处理错误的传统机制 思想 基本语法 栈解旋 接口声明 异常类型和变量的生命周期 异常和继承 标准异常库 1.处理错误的传统机制传统的C语言在函数执行过程中遇到语法错误或者逻辑错误的时候,通过函数返回值表明所遇到的错误类型。2.思想在C++里面,通过异常,跨越函数来通知整个程序错误发生并对错误进行相应的处理。 C++的异常处理机制使得异常的引发和异常的处理不必在同一个函数中,这样底层
2017-06-20 09:09:41
592
转载 21类型转换
类型转换类型转换 类型转换名称和语法 类型转换一般性介绍 1static_cast 2reinterpret_cast 3dynamic_cast 4const_cast 典型案例 1 static_cast用法和reinterpret_cast用法 2 dynamic_cast用法和reinterpret_cast用法 3 const_cast用法 总结 1.类型转换名称和语法 C风格的强制类型转
2017-06-19 23:28:46
398
转载 20泛型编程(模板)
泛型编程(模板)泛型编程模板 模板综述 函数模板 1基础语法 2函数模板遇上函数重载 3函数模板实现机制 类模板 1普通类模板的语法 2继承中的类模板语法 2类模板知识体系梳理 3类模板中的static关键字 4类模板小结 模板在工程中的应用 1.模板综述 背景有时候许多函数或子程序的逻辑结构是一样的,只是要处理的数据类型不一样 有时候多个类具有相同逻辑的成员函数和成员变量,只是成员变量的数据类
2017-06-19 22:50:53
536
转载 19纯虚函数和抽象类
纯虚函数和抽象类纯虚函数和抽象类 基本概念 案例 抽象类在多继承中的应用 面向抽象类编程 socket库c模型设计和实现 C语言回调函数和函数指针 1.基本概念2.案例 #include <iostream> using namespace std;////面向抽象类编程(面向一套预先定义好的接口编程)//解耦合 ....模块的划分 class Figure //抽象类 { public:
2017-06-19 19:49:47
473
转载 18多态
多态多态 问题引出 解决方案 工程意义 成立条件 理论基础 本质剖析 1 多态实现原理 2 证明VPTR的存在 3 构造函数中调用虚函数 面试题集锦 1 关于函数重载重写重定义 2 为什么定义虚析构函数 3 父类和子类指针的步长 4 关于多态的理解 5 C编译器是如何实现多态 6 类的每个成员函数是否都可以声明为虚函数为什么 7 构造函数中调用虚函数能实现多态吗为什么 8 虚函数表指针VPTR被编译
2017-06-01 14:10:52
488
转载 17多继承
多继承多继承 基础知识 派生类的访问控制 继承中的构造和析构 多继承 1.基础知识1.1 类之间的关系has-A,uses-A 和 is-Ahas-A 包含关系,用以描述一个类由多个“部件类”构成。实现has-A关系用类成员表示,即一个类中的数据成员是另一种已经定义的类。 常和构造函数初始化列表一起使用 uses-A 一个类部分地使用另一个类。通过类之间成员函数的相互联系,定义友元函数
2017-06-01 12:48:58
473
原创 16运算符重载
运算符重载运算符重载 概念 限制 基础 提高 字符串类的实现 附录运算符和结合性 本人博客收集自网上前人资料,只为做笔记复习,而且好的东西应该和大家分享才是!如有冒犯,告知鄙人定会删除 1.概念 什么是运算符重载 所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是”一名多用”。运算符也可以重载。实际上
2017-05-27 11:07:29
841
原创 15关于友元和一些小练习
关于友元和一些小练习关于友元和一些小练习 友元函数 友元类 设计一个数组类的最初模型 小结 1.友元函数class A1 { public: A1() { a1 = 100; a2 = 200; } int getA1() { return this->a1; } //声明一个友元函数 f
2017-05-27 09:25:08
450
原创 14面向对象模型初探
面向对象模型初探面向对象模型初探 基础知识 编译器对属性和方法的处理机制 this指针 全局函数PK成员函数 1.基础知识C++对象模型可以概括为以下2部分: 1. 语言中直接支持面向对象程序设计的部分,主要涉及如构造函数、析构函数、虚函数、继承(单继承、多继承、虚继承)、多态等等。 2. 对于各种支持的底层实现机制。 在c语言中,“数据”和“处理数据的操作(函数)”是分开来声明的,也就是说,
2017-05-25 17:39:10
549
原创 13静态成员
静态成员静态成员 存在的意义 静态成员变量 静态成员函数 1.存在的意义使得某个成员为所有对象共享2.静态成员变量 关键字 static 可以用于说明一个类的成员, 静态成员提供了一个同类对象的共享机制 把一个类的成员说明为 static 时,这个类无论有多少个对象被创建,这些对象共享这个 static 成员 静态成员局部于类,它不是对象成员 私有静态成员的示例代码 #include<io
2017-05-25 16:19:03
291
原创 12对象的构造和析构
对象的构造和析构对象的构造和析构 基本概念 构造函数分类及调用规则 1无参数构造函数 2有参数构造函数 3拷贝构造函数 4默认构造函数 5调用规则 深拷贝和浅拷贝 多个对象构造和析构 调用顺序 对象的动态管理 1.基本概念 创建一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值。注意,类的数据成员是不能在声明类时初始化的。 为了解决这个问题,C++编译器提供了构造函数(constru
2017-05-25 14:14:58
641
原创 11类和对象
类和对象类和对象 基本概念 类的封装 示例代码 1.基本概念 类、对象、成员变量、成员函数 面向对象三大概念 封装、继承、多态 编程实践 类的定义和对象的定义,对象的使用 求圆形的面积 定义Teacher类,打印Teacher的信息(把类的声明和类的实现分开) 2.类的封装1.封装(Encapsulation) 封装,是面向对象程序设计最基本的特性。把数据(属性)和函数(操作)合成一个整体,这在
2017-05-25 09:47:37
556
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅