自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 收藏
  • 关注

原创 19C++11重要新特性

C++11重要新特性1.类内初始化在我们之前,初始化都是在构造函数中,但是有时使用不当,部分成员没有赋值,但被使用时,就会不知道该成员指向了哪里。在许多高级开发语言中,java/go都会给成员默认添加初始值,现在C++11也可以了。#include <iostream>using namespace std;class Student{public: string name{"lisi"};//string name = "lisi" int age{20};//

2021-07-08 09:42:58 266

转载 2021-07-29

开篇废话 很久不研究cocos2d-x了,也不知道如今发展如何了。先前写游戏时会分几块。 主要功能代码都是用C++编写,编辑器用vsandroid平台相关功能使用 Java 编写,编辑器用 Eclipseios平台相关功能使用 Object-C 编写,编辑器用 ...

2021-07-29 17:26:28 746

原创 11堆排序

https://blog.csdn.net/weixin_45796387/article/details/114994648?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162509768116780274190983%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162509768116780274190983&biz_i

2021-07-28 20:23:54 256

原创 03java面试题之多线程

多线程35.并行和并发有什么区别?​ 并行:没有对 CPU 资源的抢占,不存在线程间切换​ 并发:对 CPU 资源进行抢占Java 中的多线程Java 中多线程运行的程序可能是并发也可能是并行,取决于操作系统对线程的调度和计算机硬件资源( CPU 的个数和 CPU 的核数)。CPU 资源比较充足时,多线程被分配到不同的 CPU 资源上,即并行;CPU 资源比较紧缺时,多线程可能被分配到同个 CPU 的某个核上去执行,即并发。36.线程和进程的区别?​ 1.进程之间资源是独立。线程之间是共享的

2021-07-22 09:41:21 258

原创 02Java面试题之容器

Java基础之容器18.java 容器都有哪些?​ 两类:​ 19.Collection 和 Collections 有什么区别?Collection 是set和list集合的接口,内部提供了很多统一的方法。Collections是一个包装类或者说工具类,提供了操作排序、搜索、安全等静态方法,用于处理线性表的20.List、Set、Map 之间的区别是什么?​ List允许有重复的元素,​ set:元素不允许重复,HashSet是无须的的(hashcode算法),LinkedHashSet

2021-07-21 23:05:42 175 2

原创 01java面试题之java基础

java基础1.JDK 和 JRE 有什么区别?​ JDK包含了JRE,JDK相当于程序员需要开发的SDK,简单说开发环境,需要写代码就要用到。JRE: java runtime env ,运行环境,编译时用到。2.== 和 equals 的区别是什么?在string字符串上有区别以及自行扩展的equals比较上有区别,其他所有类型都是比较地址。 kotlin中==是比较具体数值, ===比较地址3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?错误,ha

2021-07-21 23:04:37 121

原创 kotlin遗留问题

kotlin遗留问题标准数据类标准库提供了 Pair 与 Triple。尽管在很多情况下具名数据类是更好的设计选择, 因为它们通过为属性提供有意义的名称使代码更具可读性。协变和逆变属性委托序列set集合: 可以去重,1,LinkedHashset : 保证元素添加的自然顺序2,TreeSet : 保证元素的自然顺序3.HashSet 是按照hash算法排序的,...

2021-07-19 13:21:11 103

原创 11kotin之协程(三)

kotlin之协程(三)1.CoroutineStart几种状态模式默认是CoroutineStart.DEFAULT 立即执行LAZY:稍后执行,只有执行job.start/join或者await才会开始执行package day8Coroutinesimport kotlinx.coroutines.CoroutineStartimport kotlinx.coroutines.asyncimport kotlinx.coroutines.delayimport kotlinx.cor

2021-07-16 09:52:58 168

原创 10kotlin之协程(二)

kotlin之协程(二)1.协程地取消与超时isActive,隐含了CoroutineScope,本身是挂起函数。 当取消时,使用它的位置,遇到挂起函数,自动计算协程状态package day8Coroutinesimport kotlinx.coroutines.*/** * 协程取消时,有一种情况,是无法取消的, 该函数正在计算中 * 取消的原理,只有当遇到挂起函数时,会自动计算当前协程状态 * */fun main(args: Array<String>) {

2021-07-16 09:52:42 188

原创 09kotlin之协程(一)

协程1.什么是协程协程是一种微线程,运行在线程中,但是协程与协程之间是不能直接通信的。2.runBlocking实际开发中基本不会用,阻塞线程,直到runBlocking内协程执行完毕后线程才能调用。fun main(args: Array<String>) { runBlocking { // this: CoroutineScope launch { // launch new coroutine in the scope of runBlocking

2021-07-15 14:32:48 155

原创 08kotlin之反射

kotlin之反射1.函数方法引用package day7refelect/** * 在包中引用 ::multiplyBy表示函数类型(int)->int * 支持重载 */fun multiplyBy(x: Int): Int { return x}fun multiplyBy(s: String): Int { return 2}fun main(args: Array<String>) { val values = listOf(1

2021-07-15 14:32:31 361

原创 07kotlin之java换转

kotlin和java互转平台类型:指的是java中ArrayList,HashSet等等1.集合 var mlist = ArrayList<String>(); mlist.add("A") mlist.add("B") for (item in mlist) { println(item) }2.类对象package day6kotlinCallJava;public class Person { private

2021-07-15 14:32:14 644 2

原创 06kotlin集合

kotlin集合1.简介kotlin中,集合分为可变和不可变但可读的集合2.集合1.mutableListOf可读可边集合,等价于java中的ArrayList。2.listOf可读不可变集合,不可添加元素进去。3.HashSetOfHashSet集合,元素不可重复,按照hashcode排序。val setList: HashSet<String> = hashSetOf("B", "A")4.mapof val numbers2 = mutableListOf("o

2021-07-13 09:30:39 513

原创 05kotlin之lamada

kotlin之lamada以及接收者类型1.函数l默认参数fun read(b: String, off: Int = 0, len: Int = b.length) { println("$b$off$len")}fun main(args: Array<String>) { read("ab") foo2(b = "nihao") // 具名参数}2.vararg函数表达式fun double(x: Int): Int = x * 2fun dou

2021-07-13 09:30:17 135

原创 04kotlin数据类与对象声明委托

数据类于对象声明1.数据类/** * 编译器自动从主构造函数中声明的所有属性导出以下成员: * equals()/hashCode() 对; * toString() 格式是 "User(name=John, age=42)"; * componentN() 函数 按声明顺序对应于所有属性; * copy() 函数(见下文)。 */data class User(val name: String, val age: Int)//如果在数据类体中有显式实现 equals()、

2021-07-13 09:29:53 161

原创 03kotlin扩展函数

扩展函数和属性1.介绍扩展:扩展一个类的新功能而无需继承该类或者使用像装饰者这样的设计模式,更多时候就是等价于java中静态函数。fun String.changeChar() = this[0] //this对应这个字符串,并推导最后的类型,并返回2.声明和this声明一个扩展函数,我们需要用一个 接收者类型 也就是被扩展的类型来作为他的前缀。隐含持有this,this表示接收者对象。/** * 这个 this 关键字在扩展函数内部对应到接收者对象(传过来的在点符号前的对象) * 很

2021-07-12 19:03:42 148

原创 02kotlin构造函数与接口

kotlin构造函数与接口1.构造函数1.constructorconstructor,有private等修饰时,需要/** * 主构造函数 * 一个类对象中,属性如果时val修饰,只生成 */class Person constructor(firstName: String) { /*……*/ }/** * 简化写法,如果没有private或者注解修饰则可以省略constructor关键字 */class Person2(firstName: String) {}class

2021-07-12 19:03:21 395 2

原创 01kotlin基础语法

koltin基础语法1.函数基础知识fun main() { println("Hello world") var value = sum1(3, 5) print(value)}//函数fun sum(a: Int, b: Int): Int { return a + b}//函数lamada表达式fun sum1(a: Int, b: Int) = a + b //lamada=会自动识别类型,如果块状//unit返回无类型,与java中void等

2021-07-12 19:01:22 100

原创 10C++自定义排序算法

六大排序排序,分为以下几个步骤:取数据->比较数据->交换数据1.冒泡排序结构示意图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ed8zLKHF-1625758859581)(G:\markdown\C++\数据结构与算法\冒泡排序.PNG)]最坏排序方式:明明要从小到大排序,结果给的正好是最大到小第一次:n-1第二次:n-2第n-1次:1————————结果是:1 + 2 + … n-1 = n^2/2 记作为 o(n^2)——————

2021-07-10 22:23:15 756 3

原创 04C++自定义字符串操作

自定义字符串操作1.字符串拼接#include <stdio.h>#include <stdlib.h>#include <string.h>char *str_contact(const char *, const char *);/**** C语言实现字符串拼接**/int main(void){ char *ch1 = "hui_"; char *ch2 = "_heihei"; char *res = NULL;

2021-07-10 12:22:19 305

原创 03数据结构之自定义双向链表

双向链表list[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0NRFIYA9-1625758685289)(G:\markdown\C++\数据结构与算法\双向链表示意图.PNG)]head:作为起始标志,析构时才删除,move:作为end标志,析构时删除,第一个元素:head->next;最后一个元素:move->pre;下面这个双向链表,是根据自我理解写出来的,将重要功能写出来了,但不是源码中List,经验证通过#include <ios

2021-07-09 09:24:38 140

原创 02数据结构之自定义stack和queue

自定义stack和queue1.stack#include <iostream>#include <vector>using namespace std;class IStack{public: virtual void push(const int &val) = 0; virtual int pop() = 0; //返回栈顶的元素,c++的stack无此功能 virtual bool empty() = 0; //判空

2021-07-09 09:23:36 139

原创 01数据结构之自定义可扩展数组

仿vector写一个动态扩容数组#include <iostream>#include <cmath>using namespace std;class OutOfException : public exception{};class Array{public: int size; int maxsize; //capicity,动态扩容public: int *arr;public: Array(int maxSize)

2021-07-09 09:23:00 155

原创 00数据结构与算法基础

基础1.逻辑结构​ 线性结构​ 树形结构 : 非线性结构​ 图形结构:非线性结构​ 集合结构2.存储结构​ 顺序存储​ 链式存储3.数据操作​ 增删改查4.数据类型与数据结构ADT(DRO)​ 抽象性​ 扩展性### 5.指令序列​ 输入:有零或多个外部量(参数)作为算法的输入​ 输出:至少产生一个结果​ 确定性:组成算法的每条指令清晰,无歧义​ 有限性:算法每条指令执行次数有效,时间也有限6.计算机求解步骤​ 1.问题的理解​ 2.数据结构涉及​ 3.算法涉及

2021-07-09 09:21:41 123 1

原创 18C++STL之内建算法

C++ STL自带算法1.遍历算法for_each#include <iostream>#include <vector>#include <algorithm>using namespace std;void print01(int val){ cout << val << " ";}class print02{public: void operator()(int val) {

2021-07-08 09:43:23 101

原创 17C++STL之内建函数对象

内建函数对象1.一元谓词仿函数,只有一个参数,叫一元谓词,两个参数,叫二元谓词。2.查找find_if#include <iostream>#include <vector>#include <algorithm>using namespace std;class MyComapre{public: bool operator()(int val) { return val > 6; }};int m

2021-07-07 11:12:08 124

原创 16C++STL之set和map

set和map关联容器1.简介map和set封装了二叉树等。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。2.set和map原理以及优点关联容器来说,不需要做内存拷贝和内存移动。set容器内所有元素都是以节点的方式来存储,其节点结构和链表差不多,指向父节点和子节点。A  /   B

2021-07-07 11:11:47 179

原创 15C++STL之list

list序列容器1.简介list是一种序列式容器,集成了双向链表的优点,所以其实本质也是双向链表。与java中LinkedList基本一致。2.内部实现机制list每个元素有三个域:前驱元素指针域、数据域和后继元素指针域。前驱元素指针域保存了前驱元素的首地址;数据域则是本节点的数据;后继元素指针域则保存了后继元素的首地址。优点有以下:​ 1.特别适合插入、删除​ 2.特别适合查找首元素和尾部元素,越接近中间,效率越低,时间复杂度为O(n/2)​ 3.不适合查找中间元素。3.list构造函

2021-07-07 11:11:28 423

原创 14C++STL之Stack和queue

stack和queue1.简介​ stack是栈,先进后出,其删除只能从容器的一端进行 元素的插入与提取操作​ queue是队列,先进先出,其中从容器一端插入元素,另一端 提取元素。2.stacksize( ) :返回栈中元素个数top( ) :返回栈顶的元素pop( ) :从栈中取出并删除元素push(e) :向栈中添加元素eempty( ) :栈为空时返回true注意:栈没有遍历的概念#include <iostream>#include <stack

2021-07-06 10:35:18 118

原创 13C++STL之deque

deque容器1.简介deque容器,双端数组,连续存储结构,即其每个元素在内存上也是连续的,类似于vector,不同之处在于, deque提供了两级数组结构, 第一级完全类似于vector,代表实际容器。2.内部实现机制双端队列的数据被表示为一个分段数组,容器中的元素分段存放在一个个大小固定的数组中,此外容器还需要维护一个存放这些数组首地址的索引数组,如下图所示。由于分段数组的大小是固定的,并且它们的首地址被连续存放在索引数组中,因此可以对其进行随机访问,但效率比vector低很多。向两端加

2021-07-06 10:34:53 173

原创 12C++STL之Vector

STL之Vector1.简介STL 是一套标准模板库。从广义上来说,容器算法迭代器、仿函数、适配器、空间适配器容器和算法之间通过迭代器进行无缝连接STL几乎所有的代码都采用了模板类或者模板函数。Vector使用上几乎等价于Java中list集合,但是二者在内部实现是完全不一样的。后面会分析。2.Vector存放内置数据迭代器:vector::iterator ;从某种意义上来说,迭代器就是指针push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。size(

2021-07-06 10:34:39 147

原创 11C++异常处理

异常处理1.简介与java一样,程序运行时常会碰到一些错误,如果不处理,很可能导致程序崩溃。C++ 异常处理机制就可以让我们捕获并处理这些错误C++ 异常处理机制会涉及 try、catch、throw 三个关键字。2.常见运行时错误运行时错误是指程序在运行期间发生的错误,例如除数为 0、内存分配失败、数组越界、文件不存在等。C++ 异常(Exception)机制就是为解决运行时错误而引入的。案例:#include <iostream>#include <string>

2021-07-05 14:40:31 489

原创 10C++模板泛型编程

模板泛型编程1.简介​ 泛型,是在运行时确定类型,而不是在编译时确定类型。主要是将类型通用化,减少代码量,实现通用化。2.函数模板等价于java中泛型函数,template<typename T> 通用模板,T主要是告诉编译器后面代码中T不要报错,在运行时确定类型。#include <iostream>using namespace std;template <typename T>void swap2(T &a, T &b){

2021-07-05 14:39:53 200

原创 09C++文件读取

文件读取1.输出单个字符#include <iostream>using namespace std;int main(int argc, char const *argv[]){ string str = "hello world"; for (int i = str.length() - 1; i >= 0; i--) { cout.put(str[i]); } cout.put('\n'); system("

2021-07-05 14:39:34 198

原创 08C++多态与虚函数

多态与虚函数1.多态介绍什么是多态,简单来说,就是父类指向子类的成员,使用子类的成员,在java中,我们很方便地去使用多态,那是因为java已经为我们对多态进行了处理。在C++中,我们就需要去了解多态的本质,只有了解多态的本质,在使用时,才不会感到迷茫。2.多态简单案例分析#include <iostream>using namespace std;class Animal{public: int age; Animal(int age); void d

2021-07-04 22:19:00 108 2

原创 07C++继承与内存模型分析

继承1.继承简单理解:子类从父类继承成员变量和成员函数父类中所有非静态成员属性都会被子类继承下去,和java一致父类中的private私有成员,是被编译器隐藏了,但是被继承了。#include <iostream>using namespace std;class People{private: string name; int age;public: void setName(string name); void setAge(int a

2021-07-04 22:17:59 364 3

原创 06C++运算符重载

运算符重载1.简介运算符重载,本质是让对象之间可以进行运算。比如,基本类型,int/float/double等等,都可以进行±*/运算,这是因为编译器内部为我们做好了相关的计算。但是非基本类型再加上string(这个C++写好了相关操作),其他对象并没有相应的±*/操作,所以这时就需要运算符重载operator了。 java中没有运算符重载的概念。运算符重载函数本质是函数,完全可以用其他函数去代替,只是没有运算操作符直观。2. operator+1.类中添加operator+操作符#inclu

2021-07-04 22:17:05 118 2

原创 04C++析构函数原理分析

析构函数1.析构介绍析构函数(Destructor)也是一种特殊的成员函数,没有返回值,不需要程序员显式调用(程序员也没法显式调用),而是在销毁对象时自动执行。Student::~Student(){ cout << "析构被执行" << endl;}析构地时候,基本类型是自动回收地。2.堆上内存析构1.拷贝与赋值介绍我们先看下C++ primer上写的话。通过简化,我们将其分解成两句话:1.拷贝基本类型(系统回收)和指针类型(手动堆内存和自行释放内

2021-07-04 22:16:25 584 2

原创 03C++类和对象

类与对象1.结构体struct————————与C语言差异很大区别如下在C++中,struct可以拥有静态成员,可以从java角度去理解。2.对象理解C++是面向对象语言,现代强大的语言大部分都是面向对象语言,比如java/javascript/go/python等等。可以简单理解:某类事物的集合,比如房子,房子里面有电视,有冰箱,有床,房子的年龄,房子的名称等等,房子是类,里面的东西叫做成员或属性。#include <iostream>using namespace std;

2021-07-04 22:15:50 107 2

原创 02C++指针与引用

C++指针与引用1.指针————————基本与C语言一致但是有以下问题需要注意:long *p;*p = 222;——————这种情况,p的地址是不知道在哪里的,会导致野指针,可能会产生错误。—————*p赋值222, 一个野指针值为222因该这样写:long a =222;long *p;p = &a;2.new在C语言中,已经有malloc来在堆上开辟内存,在C++中,可以继续使用,但是又更好的方式,new.原理:与c语言基本一致,在堆上开辟内存,手动开辟的,需要

2021-07-04 22:15:10 205 1

空空如也

空空如也

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

TA关注的人

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