C/C++
一些C和C++的知识(主要记录个人学习过程)
东菇
这个作者很懒,什么都没留下…
展开
-
N皇后问题(详细)
在牛客上刷到N皇后问题。使用用回溯法,然后直接想到的就是下面的,但是没有通过测试(1<=n<=14),n=14时就超时了。 //n=14超时 void dfs(int dept,int n,vector<int>& pos,int &res) { if(dept>n) { res++; return ; } i原创 2020-08-20 10:32:25 · 1180 阅读 · 0 评论 -
树与堆
树树的结构如下图,其实际是类似链表的结构,只不过后续连接的不止一个数据template <typename T>//树结构的定义(未包含实现功能)class Tree{ int size; //子节点数量public: T data; //数据 Tree **childs; //子节点 用数组指针来存放}这种形式画出来的连接图类似树状图而称为树结构,其...原创 2020-02-02 22:28:02 · 122 阅读 · 0 评论 -
C++实现A*寻路
A*寻路原理可查看之前的文章:游戏AI中的寻路算法(A*算法)上面的是C#,下面是用C++实现的Astart类(大致一样),main函数就要自己构造地图和随机://Astart.h//路径的节点 struct Node { int x; //坐标 int y; int G; //从起点到当前位置的值 int H; //从当前位置到终点预...原创 2020-02-02 02:48:00 · 710 阅读 · 0 评论 -
关联存储结构(辨认map,set)
pair使用map容器之前要知道pair是什么,pair是一种键值对的类型,key-value的形式,一个键代表一个值。map而map就是存储pair的容器,也可以理解为pair的数组。而key就是标识值的关键字(容器会以此来自动排序且不重复),我们简单理解为key为数组下标,value为值也行。setset是类似map但是其只是存储普通类型的容器,而不是存储键值对类型的容器...原创 2020-02-02 02:37:23 · 363 阅读 · 0 评论 -
顺序存储结构(理解vector,list,deque何时适用)
vector动态数组,取代C语言要自己手动申请数组,这是最常用的,在内存存储就是按照顺序的存放,简单就理解为数组,其特点也就是可以高效随机访问。list双向链表, 就是C语言理解的双向链表,在内存存储是随机存储,以链式结构连接,其特点是可以高效地随机插入deque双向队列,但是不是数据结构的队列,可以理解为动态数组和双向链表的结合,其有上面两者的特点,但是又没有其各自的高效,其存...原创 2020-02-02 02:15:44 · 839 阅读 · 0 评论 -
数组类的封装(泛型编程)
形式:template< class T>或者template< typename T>这个是提高代码的适用性,比如两个数相加,如果直接用普通函数那么,就要写几个不同参数的重载,如果用泛型编程,只需写一个。下面是类模板的应用数组类的封装:#pragma once #include <iostream>using namespace std;tem...原创 2020-01-18 17:34:10 · 316 阅读 · 1 评论 -
C++I/O流(打包和解包)
引用头文件#include<fstream>,使用对象来操作I/O流。创建文件操作对象fstream file(文件名,操作方式),ios::in(读取)、ios::out(写入) 、 ios::binary(二进制)利用I/O流来打包和解包这里打包和解包的格式要一致,要不然会出错,通常打包我们都会写一个索引表(类似书本的目录,方便我们取出内容),索引表格式为: 索引表大小(4个...原创 2020-01-18 12:53:55 · 1140 阅读 · 2 评论 -
C++异常处理(自定义错误类)
关键语句(没有finally)try{ //可能会throw出错误的代码块}catch(exception& e)//或者对应错误的类型{ //异常处理}自定义错误类继承exception并实现多态自定义错误类class Myexception :public exception//自定义错误类{public: Myexception(string s)...原创 2020-01-18 11:24:39 · 1927 阅读 · 0 评论 -
重载运算符
重载运算符的格式 返回值类型 operator 重载的预算符号(参数),其中this是一个对象参数,而且重载运算符必须符合原来的符号运输规则。比较普通的重载,比如+,对象相加,我们就要在类中写一个重载+的函数,使得这个+成立:class A{public : int age; int operator +(A const mya) { return this->age + ...原创 2020-01-10 14:50:17 · 177 阅读 · 0 评论 -
C++类的常量和静态
常量关键词:const 静态关键词:static类中使用这两个关键词,称常量成员,和静态成员。常量成员有常量属性和常量函数;静态成员有静态属性和静态函数。常量成员常量属性(在声明最前面加const):要在初始化列表初始化,然后不能再次更改其的值,也就是该属性为常量。常量函数(在声明最后面加const):属于this的所有数据成员都不能被修改,这是语法限定,相当于这个是读函数,不过形参,...原创 2020-01-10 12:52:00 · 929 阅读 · 0 评论 -
初始化列表
初始化列表:就是对类的成员(属性)进行初始化的操作。使用的原因:1.常量成员,因为常量只能初始化不能赋值,所以必须放在初始化列表里面,如const int a;2.引用类型,引用必须在定义的时候初始化,并且不能重新赋值,所以也要写在初始化列表里面,int &a;3. 没有默认构造函数的类类型,因为使用初始化列表可以不必调用默认构造函数来初始化,而是直接调用拷贝构造函数初始化。如...原创 2020-01-08 13:47:17 · 219 阅读 · 0 评论 -
浅拷贝与深拷贝
拷贝函数固定形式:ClassName(const &ClassName copy){}浅拷贝:缺省拷贝构造函数,这个大多数都会用到,其实就是把一个对象赋值给一个同类对象,而其原理就是把所有成员都以‘=’,也就是赋值的形式来完成。但是在涉及到动态内存方面的时候,这种浅拷贝就会出错,这时候就要用到深拷贝,如下类:class A{public : A() {} A(const cha...原创 2020-01-08 13:33:59 · 59 阅读 · 0 评论 -
[easyx游戏开发]---实现透明背景效果
使用精灵图和掩码图制造透明效果。精灵图:就是你要绘制的图片,希望该图片某些区域透明。 掩码图:和精灵图对应,要显示的区域用白色,透明的区域用黑色。 实现步骤1.打开ps,新建一张图,宽高和图片大小一致,然后点编辑–>填充–>选黑色2.点击打开–>选择对应的图片点击左栏快速选择工具选取要裁剪的部分,Ctrl+C,点击原图,Ctrl+V,将原图移到...转载 2019-10-29 21:34:27 · 1370 阅读 · 2 评论 -
学习C++多线程基础
学习C++的过程中我们经常会用到.和::和:和->,在此整理一下这些常用符号的区别。1、A.B则A为对象或者结构体;2、A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;3、::是作用域运算符,A::B表示作用域A中的名称B,A可以是名字空间、类、结构;...原创 2019-05-15 23:36:57 · 242 阅读 · 0 评论 -
C++字符串转换
——刷leetcode时发现string不能强制转换,查到了相关函数。stoi()函数 将字符串转换为整数;stol()将字符串转换为long;stoul()将字符串转换为无符号整数;stoll()将字符串转换为long long;stoull()将字符串转换为unsigned long long;stof()将字符串转换为float;stod()将字符串转换为double;st...原创 2019-06-02 17:41:14 · 213 阅读 · 0 评论 -
用C语言实现可添加删除元素的数组(两种方式,数组和指针)
——个人笔记这对于初学C的人来说,是一个比较有意思的问题。要运用到的知识点比较全面,方法也比较实用思路这个只是个人思路,如果你想到更好的不妨试试。首先由于C没有动态数组,那么我们就声明一个int类型范围比较大的数组,比如 int array[1000]。那么我们要知道里面存放多少个元素,要怎么获取呢?直接用sizeof(array)/sizeof(array[0])是获取到这个数组的容...原创 2019-08-14 11:08:58 · 6020 阅读 · 0 评论 -
交换两个int变量的方式(二进制)
//交换//int a = 1, b = 2;//a = a ^ b;//b = a ^ b;//a = a ^ b;原创 2019-09-08 12:27:58 · 667 阅读 · 0 评论 -
C的字符串数组(一些简单知识点)
sizeof()算 ‘\0’arr[10]="asfa"会自动后面全部补充’\0’,但是后面字符串要比数组小,要不然会输出乱码#include<string.h> 里面的strlen()求实际长度不包括’\0’strcpy()复制strcat()连接strcmp()比较...原创 2019-09-17 21:35:48 · 177 阅读 · 0 评论 -
C的文件读取(一些简单知识)
File *file打开关闭文件fopen(“路径”,打开方式),返回的是Filefclose()写入字符:fput(只能写入一个字符,文件指针)fputs(字符数组,文件指针)fwrite(字符数组,写入类型大小(sizeof),数据个数(strlen),文件指针)读取字符fget(只能读取一个字符(存储的),文件指针)EOF 表示末尾(用for循环和fget可以获取文本所...原创 2019-09-17 22:17:53 · 238 阅读 · 0 评论 -
推箱子多关卡(C语言+easyX实现,详细)
——个人笔记原创 2019-09-24 01:05:57 · 5176 阅读 · 1 评论 -
指针(一些知识)
指针类型的大小都是4个字节原创 2019-09-25 20:39:53 · 92 阅读 · 0 评论 -
多种排序(C实现)
——个人笔记桶排序(计数排序):适用于范围小而且重复的数字多,其过程就是,重新开一个数组(桶,通常用数组下表来标志桶的有序),来对无序的数组来进行计数(不同的装在不同的桶里),然后再按照桶里的顺序排就行了。void BarrelSort(int arr[],int n,int k)//n为数组长度,k为桶的大小(0到k){ int *barrel = (int *)malloc(size...原创 2019-10-08 22:35:09 · 113 阅读 · 0 评论 -
c++ STL知识
下面内容转载于:https://blog.csdn.net/wxq1987525/article/details/65735421。vector (连续的空间存储,可以使用[]操作符)快速的访问随机的元素,快速的在末尾插入元素,但是在序列中间岁间的插入,删除元素要慢,而且如果一开始分配的空间不够的话,有一个重新分配更大空间,然后拷贝的性能开销.2。deque (小片的连续,小片间用链表相连,...转载 2019-05-03 01:02:32 · 102 阅读 · 0 评论