
c/c++
文章平均质量分 50
黑桃_K_
K
展开
-
我知道的 位图
目录一、位图:1.1、位图概念:2.2、位图实现原理:2.2.1、构造位图:2.2.2、位图存储:2.2.3、位图删除:2.3、位图代码实现:2.4、位图的应用:一、位图:1.1、位图概念:用每个比特位判断某种状态,0/1 判断为两种状态,可以大大节省空间;适用于数据无重复,海量数据;通常判断数据存不存在;2.2、位图实现原理:2.2.1、构造位图:2.2.2、位图存储:2.2.3、位图删除:2.3、位图代码实现:#include<vector>using namespac原创 2021-06-01 21:28:50 · 241 阅读 · 19 评论 -
红黑树 都可以这么细?面试官还能怎么说.
女:你一点都不注重细节;男:你说我不都细节?? 你看看下面的红黑树讲解,,你说我不够细节??随后男发送下面红黑树代码发给女朋友之后。女:哇,哥哥果然好细;男:细节拉满,关注又是一个细节;我们从一步一步一点一点的去挖这个红黑树,代码+图解红黑树的性质:首先记住它的性质:根节点是黑色的;如果一个节点是红色的,则它的两个孩子结点是黑色的;对于每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点;每个叶子结点都是黑色的(此处的叶子结点指的是空结点);对颜色进.原创 2021-05-24 19:11:16 · 2285 阅读 · 50 评论 -
C++ 继承 详解
文章目录一、什么是继承?1.1、概念1.2、定义1.2.1、继承关系和访问限定符1.2.2、继承基类成员访问方式的变化注意:二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、菱形继承八、继承和组合一、什么是继承?1.1、概念**继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。1.2、定义下面我们看到Person是父类,也称作原创 2021-05-09 18:01:06 · 10628 阅读 · 39 评论 -
深拷贝与浅拷贝 区别及应用
浅拷贝只是对指针的拷贝,拷贝后两个指针指向同一个内存空间;深拷贝对指针指向的内容进行拷贝(重新分配内存),经深拷贝后的指针是指向不同地址的指针;因此浅拷贝释放内存的时候很容易出现因为释放两个指针而内存出错。 浅拷贝(释放时,因为多次释放出错)只拷贝指针 //拷贝构造函数 Vector(const Vector<T>& v) :_start(nullptr) ,_finish(nullptr) ,_endOfStorage(nullpt.原创 2021-04-11 21:11:42 · 397 阅读 · 1 评论 -
c++ vector模拟实现
一、vector是什么?vector是表示可变大小数组的序列容器,它也采用连续存储空间来存储元素,因此可以采用下标对vector的元素进行访问,它的大小是动态改变的,vector使用动态分配数组来存储它的元素;二、容器特性1.顺序序列顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素;2.动态数组支持对序列中的任意元素进行快速直接访问,甚至可以通过指针进行该操作。操供了在序列末尾相对快速地添加/删除元素的操作;3.能够感知内存分配器的容器使用一个内存分原创 2021-04-11 19:01:37 · 298 阅读 · 3 评论 -
cin.good() cin.clear()
cin.good(); //检测输入类型是否相同cin.clear();//对输入命令刷新,重新输入3.代码验证;int num,temp;cin>>m>>temp;cout<<m<<temp;如果你输入A 1 ,则不会有输出的,因为A 不是int型的,输入出错,输入终止;int num,temp;cin>>num;if(!cin.good())cin.clear();cout<<nu...原创 2021-03-31 22:54:22 · 502 阅读 · 0 评论 -
strcmp的返回值 Linux与Windows下区别 源代码实现区别
strcmp的返回值linux下的vim下;返回值为前面的字符串的减去后面字符串的值;vs2019下:#include<iostream>using namespace std;int main(){ char ch[] = "asdasd"; char ch2[] = "asdasd"; char ch3[]= "asdas2"; char ch4[] = "asdasd123"; int num = strcmp(ch, ch2); int num2原创 2021-03-29 22:08:26 · 788 阅读 · 3 评论 -
begin end rbegin rend 迭代器
位置str.begin();指向字符串的第一个字符的位置str.end();指向字符串的最后一个字符的后一个位置;str.rbegin();指向字符串的最后一个字符的位置;str.rend();指向第一个字符串的前一个位置;移动方向str.begin()++;向后面的位置移动(从首字符向尾字符移动);str.rbegin()++;向前面的位置移动(从尾字符向首字符移动);void test(){ string str = "1234"; cout << *str原创 2021-03-28 22:09:46 · 1093 阅读 · 1 评论 -
new delete
C++动态内存申请struct 与 classmalloc和free与new和deleteC++动态内存申请void Test(){// 动态申请一个int类型的空间int* ptr4 = new int;// 动态申请一个int类型的空间并初始化为10int* ptr5 = new int(10);// 动态申请10个int类型的空间int* ptr6 = new int[3];delete ptr4;delete ptr5;delete[] ptr6;}在c语言中,.原创 2021-03-25 13:02:06 · 120 阅读 · 0 评论 -
内部类
内部类:类似于友元类,内部类可以访问外部类,外部不能访问内部,内部类是外部类的友元类,外部类不是内部类的友元类内部类中可以直接访问外部类的static 成员,其他友元类要加作用域;public:外部可见private:外部不可见内部类是独立于外部类,不存储于外部类,如下;**内部类不占外部内存;#include<iostream>using namespace std;class A{public: class B { private: char _a2;原创 2021-03-22 22:02:19 · 104 阅读 · 0 评论 -
C++中的const
const成员函数加const加const表示值能不能被修改const对象不可以调用非const函数非const对象可以调用const对象class A{int _a;public: getI()//只读 { return _i; } setI()//修改 { _i=i; }int _a;}A a;//非constconst A b;//const a.setI(10);//可以a.getI();//可以b.setI(10);//不可以b原创 2021-03-21 22:33:05 · 99 阅读 · 0 评论 -
运算符重载
class Date{public: Date(int y = 1, int m = 1, int d = 1) { if (y <= 0 || m <= 0 || m > 12 || d <= 0 || d > getday(y, m)) { _y = 1; _m = 1; _d = 1; } else { _y = y; _m = m; _d = d; } } int getday(int y,int原创 2021-03-20 17:49:26 · 118 阅读 · 0 评论 -
pid_t和int
pid_t pid; //定义一个进程号类型的变量 pid创建进程时经常会用到进程号的类型定义:pid_t。我们都知道这个类型定义实际上就是int型。但是在linux下的c中的头文件中这个定义到底是怎么定义的呢?今天就把以前找这个定义的过程贴出来:1.首先在/usr/include/sys/types.h中有如下定义#include <bits/types.h>…#ifndef __pid_t_definedtypedef __pid_t pid_t;#define __转载 2021-03-15 18:06:24 · 691 阅读 · 4 评论 -
find和grep
findfind:查找文件或目录find +位置+文件名或目录名find /root/zhan/test testfind -name “*.c”//当前文件下.c拓展名结尾的文件find ./ -mtime +2 //查找更新时间不超过两天的文件find ./ -mtime 2 //查找更新时间在二天以内的文件find ./ -mmin -2 //查找更新时间在两分钟以内的文件find ./ -mmin +2原创 2021-03-15 13:06:48 · 207 阅读 · 0 评论 -
const
const int *p=&a;//可以改变指针的指向,但是不能对指针所指向地址的值进行改变int* const p=&a;//可以改变指针所指向地址的值,但是不能改变指针的指向int const *p=&a;//可以改变指针的指向,但是不能对指针所指向地址的值进行改变const int const *p=&a;//可以改变指针指向,但是不能改变指针所指向地址的值int const * const p=&a;//指针指向和指针指向地址原创 2021-03-12 13:12:55 · 104 阅读 · 0 评论 -
c++ this
this成员函数的隐含参数在C++的类中,每一个非静态函数中都有一个this指针,存在于成员函数中,作为函数的第一个形参,但是不会显示,指向当前调用函数this指针的类型取决于使用this 的成员函数类型以及对象类型,this指针并不是成员的一部分,sizeof无用#include<iostream>using namespace std;class A{public: A() { m =1; } void Display() { cout <<原创 2021-03-11 21:09:15 · 167 阅读 · 0 评论 -
C++
C++定义命名空间:namespace+命名空间名字+{空间成员}namespace N1{......}同一工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中使用using引用命名空间的成员using namespace N1;//引用N1的成员变量C++的输入&输出//C++中没有.h#include<iostream>using namespace std;int main(){//cin:输入,可以连续输入,从左到右cin原创 2021-02-24 12:02:17 · 113 阅读 · 0 评论 -
linux 基础指令
LINUX指令认识使用XShell远程登录LINUx查看Linux的ipifconfig1.ls[选项][目录文件]对于目录,列出目录下所以子目录与文件。对于文件,列出文件名以及其他信息-a 列出目录下的所有文件,包括以 . 开头的隐含文件。-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件-l 列出文件的详细信息。-n原创 2021-02-01 12:30:33 · 200 阅读 · 1 评论 -
操作系统
linux的背景.来源1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。1969-1970年,AT&T的贝尔实验室研究人员Ken Tompson和Dennis Ritchie,在采用很多Multics特点的基础上开发了UNIX系统。它运行在小型机上,满足了系统对科研环境的要求。从产生开始,UNIX就是一个有价值的、高效的、多用户和多任务的操作系统。UNIX从满足个人的设原创 2021-02-01 11:29:28 · 353 阅读 · 0 评论 -
二叉树实现
#include<stdio.h>typedef char DataType;typedef struct BNode{DataType _data;struct BNode* _left;struct BNode* _right;}BNode;//ABD##E#H##CF##G##BNode* creatBTree(DataType arr[], int idex){if (arr[idex] == ‘#’){(idex)++;return NULL;}else原创 2021-01-21 12:32:25 · 239 阅读 · 0 评论 -
数据结构堆的实现
//假设小堆typedef int HDataType;typedef struct heap{ HDataType* _data; int _size; int _capacity;}heap;void Swap(int* a, int* b){ int tmp = a; a = b; b = tmp;}void heapInit(heap* hp){ if (hp == NULL) return; //空堆 hp->_data = NULL; hp->原创 2021-01-06 18:53:30 · 100 阅读 · 0 评论 -
栈的顺序表的实现
栈的顺序表的实现# 栈的顺序表的实现#include<stdio.h>#include<stdio.h>typedef int STDataType;//顺序表结构实现typedef struct stack{ STDataType* _data; int _size; int _capacity;}stack;void stackInit(stack* st){ if (!st)return; st->_data = NULL; st->原创 2020-12-18 22:16:46 · 206 阅读 · 1 评论 -
顺序表和链表的优缺点
顺序表:优点:1.空间连续2.支持随机访问3.空间利用率高,不容易造成内存碎片4.尾插尾删效率高缺点:1.头插头删,中间插入,删除效率低。不适合这些位置的插入,删除2.增容代价高:申请,拷贝,释放链表(双向带头循环)优点:1.任意位置插入,删除效率高2.空间利用率高(用就申请不用不申请)缺点:1.空间不连续,容易造成内存碎片2.不能随机访问...原创 2020-12-17 19:00:20 · 628 阅读 · 0 评论 -
带头双向链表的增删打印等操作实现
#include<stdio.h>#include<stdlib.h>typedef int LDataType;//双向带头循环链表的节点typedef struct ListNode{ LDataType _data; //指向下一个节点的起始位置 struct ListNode* _next; //指向上一个节点的起始位置 struct ListNode* _prev;}ListNode;//双向带头循环链表typedef struct List{原创 2020-12-16 21:53:23 · 189 阅读 · 0 评论 -
线性表的链表的增删查改等的操作
线性表的链表的增删查改等的操作#include<stdio.h>//d定义类型typedef int LDateType;//定义结构体类型typedef struct listNode{ LDateType _date; struct listNode* _next;}listNode;//定义头指针typedef struct list{ listNode* _head;}list;//初始化头指针void InistList(list* lst){ if原创 2020-12-12 19:49:50 · 239 阅读 · 0 评论 -
线性表的增删查改等的实现
线性表的增删查改等的实现#pragma once#include <stdio.h>#include <assert.h>#include <stdlib.h>// 对数据的管理:增删查改 typedef int SLDateType;typedef struct SeqList{ SLDateType* date; size_t size; size_t capacity; // unsigned int}SeqList;//检查顺序表容原创 2020-12-11 13:33:26 · 263 阅读 · 0 评论 -
对动态内存申请中的malloc free collocrelloc的简单认识
动态内存中用到的几个函数mallocfreerelloccallocmallocvoid* malloc(size_t size);申请一快连续可用空间,并返回指向这块空间的地址。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是 void ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。如果参数 size 为0,malloc的行为是标准是未定义的,原创 2020-12-01 11:28:27 · 137 阅读 · 0 评论 -
交换两个变量值的几种方法;
1.借用一个临时值交换两个变量:#include <stdio.h>int main(){ int num1 = 5; int num2 = 8; int temp;//申请一个临时变量 printf("num1和num2的值为%d %d\n", num1, num2); temp = num1; num1 = num2; num2 = temp; printf("num1和num2的值为%d %d\n", num1, num2); return 0;}2.不用临时原创 2020-11-27 20:00:47 · 5481 阅读 · 3 评论 -
大端小端判断
大端小端由机器CPU决定。大端低位高地址,高位低地址。小端低位低地址,高位高地址。用联合体判断大端小端#include<stdio.h>union un{ int a; char b;}u;void main(){ u.a = 1;//既赋值给 printf("%d\n", u.b); //a 0000 0000 0000 0000 0000 0000 0000 0001 //b 0000原创 2020-11-26 22:22:08 · 276 阅读 · 0 评论 -
全局变量 局部变量 静态 动态 static auto register extern
全局变量全局变量不初始化时系统默认为0;局部变量没有默认值。静态外部变量(只限本文本)外部变量(既非静态的外部变量,允许其他文件引用)局部变量自动变量,既动态局部变量(离开函数值就会消失)静态局部变量(离开函数值保留)寄存器变量(离开函数值就消失)(形式参数可以定义为自动变量或寄存器变量)...原创 2020-11-26 16:08:17 · 261 阅读 · 0 评论 -
指针的简单应用
指针的简单认识指针在c中的地位举足轻重,指针是必须要学好。由简入难。一、指针简单定义。二、指针的类型。三、野指针。四、指针运算。五、指针和数组的认识。六、二级指针。七、指针数组。一、指针的简单定义指针是一种利用地址做运算的工具,它直接指向地址,通过它找到地址的内存单元。指针是个变量,存放内存单元的地址。指针需要先定义,需要使用指针,也要为指针申请一个空间,指针的空间里放的事所指变量的地址。int a=5;//在内存中开辟一块空间int* p=&a;//申请一个int指原创 2020-11-20 16:51:23 · 1016 阅读 · 0 评论 -
hanoi 汉诺塔小游戏编程步骤写法
#include<stdio.h>int main(){ void hanoi(int n, char one, char two, char three); //声明hanoi函数 int m; printf("input the number of diskes:\n"); scanf("%d", &m);原创 2020-11-19 15:09:11 · 1052 阅读 · 0 评论 -
%d %s %c %x %p %u %f %lf %%的使用方法
%d %nd//表示打印几位有效数字,当结果<n时打印结果靠右边对其// 以整数形式打印. %c //以字符形式打印.%s//以字符串形式打印.%x//以16进制形式打印.%p//以指针形式打印.%u//以无符号整型形式打印.%f%m.nf//eg: %6.4f表示打印结果有效数字为6位,小数位4位。//以单精度浮点数形式打印.%lf//以双精度浮点数形式打印//%m.nlf 同上.%...原创 2020-11-16 22:11:46 · 1147 阅读 · 0 评论 -
我该怎么玩‘’数组‘’啊 一维数组,二维数组,字符数组,处理字符串函数
一维数组类型符 数组名[常量表达式];*** 数组名既可以表示数组的地址,也可以表示数组首元素的地址,两个在数值上是一样的,但是含义不一样。int arry[10];这个数组里元素个数:int n=sizeof(arry)/sizeof(arry[0]);//元素个数=数组的总体字节大小/第一个元素的所占字节大小表示这是一个整型(int)数组,里面有10个整型元素,分别为a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。("不存在a[10] ")原创 2020-11-14 18:12:14 · 315 阅读 · 0 评论 -
操作符的使用方法,
操作符的使用分类:一、算术操作符二、移位操作符三、位操作符四、赋值操作符五、单目操作符六、关系操作符七、逻辑操作符八、条件操作符九、逗号表达式一、.算数操作符 + — * / %1.除了%以外其他几个操作符可以作用于整数和浮点数。2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。// 4.0/2=4/2.0=2.00003. % 操作符的两个操作数必须为整数。返回的是整除之后原创 2020-11-11 10:46:49 · 504 阅读 · 0 评论 -
system的用法,多样用法、有趣的system、关机自制
system的常用用法//控制系统的控制台的行和列,100是行距离40是列距离,可自行调整:system("mode con cols=100 lines=40");……//控制台的背景颜色和字体颜色调节,//eo表示e(大小写都可以)为背景色,0为字体色://system("color e0");//例如下图为e0,如果符号输入错误系统会出现上图………//系统会在输入行出现暂停,如果vs在结束之前‘}’输入就会暂停在控制台处。system(“pause”);………原创 2020-11-10 21:54:55 · 4364 阅读 · 3 评论 -
c语言新手小程序
编程新手猜数字游戏#include <stdio.h>#include <time.h>#include<stdlib.h>void main() {srand(time(0));int n = rand() % 100 + 1,c = 0,a = 0;printf(“我有一个1-100的随机数,你猜是多少:>”);do {scanf("%d", &a);c++; if(a > n)printf(“猜大了。\n”);else i原创 2020-11-09 16:25:58 · 275 阅读 · 0 评论