c++
a_eastern
这个作者很懒,什么都没留下…
展开
-
共用体的一点笔记
共用体我们都知道共用体内存大小是共用体中元素最大的那个元素的大小,那么数据在内存中到底是怎么分配的呢?以小端存储为例,下面这个例子一目了然#include<string>#include<unordered_map>#include<algorithm>using namespace std;union { int i; char x[2];}a;int main(){ a.x[0] = 0; a.x[1] = 10;//10的二进制为10原创 2021-10-11 11:33:33 · 170 阅读 · 0 评论 -
# 链表反转插入实例
链表反转与插入实例#include<iostream>using namespace std;typedef struct listnode{ int data; struct listnode * next;}listnode,*list;list insert(list head,int num){ list node; list p; node = (listnode*)malloc(sizeof(listnode)); node->data = n原创 2021-09-05 12:04:30 · 94 阅读 · 0 评论 -
C++笔试奇怪输入输出总结
输入输出常用函数cincin.getline()cin.get()举例1.一维数组输入,第一行输入一个数字代表数组长度,第二行开始输入数组元素,中间以空格分隔#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<vector>#include<algorithm>#include<string>#include "stdio.h"#include<stdlib.h&g原创 2021-09-04 15:30:18 · 281 阅读 · 0 评论 -
c/c++刷题常用函数总结
大小写转换函数tolower();//转小写toupper();//转大写上述函数如果传入参数已经是大写或小写了或者是其他字符那么将保持不变字母判断isalpha();如果是字母输出true;如果不是字母输出false;原创 2021-08-24 19:18:10 · 193 阅读 · 0 评论 -
关于指针的几个总结
案例1 int a[5] = { 1,2,3,4,5 }; int *ptr = (int *)(&a + 1); cout << *(a + 1) << " " << *(ptr - 1) << endl;打印结果是:2,5这里的难点在于*(ptr-1),&a+1注意a没带括号,那么这里a代表的是数组的地址,那么&a+1就是加一个数组大小案例2 int arr[] = { 21,22,23,24,25 }; int原创 2021-07-21 21:10:00 · 188 阅读 · 0 评论 -
去掉字符串中的空格
引子刚才脑海中突然想到曾经面试官问到的一个问题,怎么去除一个字符串中的空格,当时记得只回答了一个思路,还用到了readline等函数,但是刚才突然又想到这个问题,也可以用string内置函数实现一下代码主要用到了string::npos中的npos和findstring::npos参数:npos 是一个常数,用来表示不存在的位置,类型一般是std::container_type::size_type 许多容器都提供这个东西。取值由实现决定,一般是-1,这样做,就不会存在移植的问题了。find函数原创 2021-07-06 21:13:36 · 798 阅读 · 0 评论 -
gdb使用笔记
gdb是什么gdb是一个调试代码的工具,调试用的,比如给程序打个断点,单步运行等等。使用方法g++/gcc编译的时候在末尾加上-g比如我的这个文件夹中有一个kp.cpp文件,那么我在使用g++编译的时候需要在末尾加上-g然后再输入gdb -kp.out进入调试状态输入 l 1从第一行列出你要调试的代码,我这里默认只列出10行,想列出更多行持续敲回车即可假如我想在86行打一个断点,则输入b 86然后回车输入r回车可以看到程序运行到第86行停止了输入s回车,单步执行,而输入n的话则原创 2021-07-04 15:05:36 · 114 阅读 · 0 评论 -
2021windows下vs2017配置ffmpeg
ffmpeg下载去官网https://github.com/BtbN/FFmpeg-Builds/releases下载如下文件下载好后将该压缩包放在合适的位置并解压vs工程文件创建及配置ffmpeg主要就是要项目里面能找到include、lib、dll文件创建一个文件夹然后用vs2017在该文件夹下创建一个空项目,并在源文件下添加一个cpp文件,并在其中添加下列代码#include <stdio.h>#include <iostream>extern "C原创 2021-06-25 19:13:47 · 1057 阅读 · 4 评论 -
2021github上传项目步骤
2021为什么2021呢?因为不知什么时候开始github将主分支名字改为了main而不是master步骤步骤很简单1.在github上创建一个仓库,然后将仓库的链接复制下来2.在本地上执行git clone 链接3.在clone下来的文件夹中git init和配置user.name和user.email git config user.name "yourname" git config user.email "youremail"4.把你要上传的文件全都复制到这个文件夹内5.执行命令原创 2021-06-23 20:09:48 · 350 阅读 · 0 评论 -
三种工厂模式理解
三种工厂模式自己的一些理解纯属自己为了记忆的一些理解,不保证正确性,如有错误,欢迎指正!简单工厂模式简单工厂模式就是工厂直接造产品工厂⟶产品工厂方法工厂方法模式就是工厂先造生产线,生产线造产品工厂⟶生产线⟶产品抽象工厂抽象工厂就是先造厂房,厂房造生产线,生产线造产品工厂⟶厂房⟶生产线⟶产品...原创 2021-04-20 12:08:50 · 88 阅读 · 0 评论 -
main(int argc, char *argv[])函数的参数意义
argc:总的参数个数argv[]:参数具体值,第0个参数是程序全名,以后的参数是命令行后面跟的用户输入参数原创 2021-04-14 15:24:50 · 98 阅读 · 0 评论 -
快速排序笔记
快速排序核心思想找一个参考点做中心轴;将大于中心轴的数据放在中心轴的右边,小于中心轴的数据放在中心轴左边;分别对中心轴左右子序列再进行1,2步的操作(即递归)代码实现自定义类型实现#include<iostream>#include<ctime>#include<algorithm>using namespace std;//void swap(int index1, int index2, int* array)//{// int temp原创 2021-04-13 11:11:45 · 85 阅读 · 0 评论 -
堆排序笔记
还是记录到博客上不易找不到笔记堆排序原理堆排序是利用堆这种数据结构对无序序列进行排序,属于贪婪算法,先利用大根(或小根堆后面省略)堆数据结构找出序列中的最大值,然后将最大值从序列中移出,然后再利用堆数据结构在剩余序列中将第二大值找出,以此类推直至所有数据都排序。堆排序的难点给定的序列怎么建立成大根堆堆排序需要牢记的几个重要知识点第一个非叶子节点位置:len/2-1;左子树位置:2*i+1;右子树位置:2*i+2;代码#include<iostream>#includ原创 2021-04-10 12:00:38 · 111 阅读 · 0 评论 -
sprintf()
sprintf()int sprintf(char *str, const char *format, …) 发送格式化输出到 str 所指向的字符串。str – 这是指向一个字符数组的指针,该数组存储了 C 字符串。值得注意的是高版的VS默认不让使用scanf,fopen等函数,说是scanf,fopen等函数不安全,而代替其函数的是scanf_s,fopen_s等函数,后边有个"_s"的形式例子#include <stdio.h>#include <math.h>原创 2021-04-01 15:36:15 · 91 阅读 · 0 评论 -
c++assert笔记
assertassert()是个函数,通常叫他断言,他的作用是,如果它内部的表达式为假,那么程序将终止,assert()后面的语句也将不会执行。它的头文件为#include<assert.h>assert(表达式);//若表达式为假,那么下面语句将不会执行cout<<"assert内部表达式为真!"<<endl;...原创 2021-03-25 15:32:26 · 103 阅读 · 0 评论 -
c++/c整型最大值和最小值
INT_MAX与INT_MINc++中,int占4个字节32位,最大值INT_MAX表示2^31-1等于2,147,483,647,最小值INT_MIN表示-2^31-1等于-2,147,483,648。原创 2021-03-22 15:11:08 · 1655 阅读 · 0 评论 -
二叉树笔记
遍历方法记忆二叉树遍历方式有前序、中序、后序遍历三种方式这里的前中后实际上说的是根节点在前还是在中还是在后,然后再记住先左后右的原则就记住了前序:root–>left–>right中序:left–>root–>right后序:left–>right–>root注意观察root的位置...原创 2021-03-03 19:59:05 · 64 阅读 · 1 评论 -
指针数组数组指针动态数组笔记
指针数组指针数组,看最后两个字,数组指针数组是一个数组,不过这个数组优点特别,它的里面存放的是地址。它的声明方式如下int *a[10]数组指针数组指针,看最后两个字,指针数组指针是一个指针,这个指针指向的是一个数组。数组指针也称行指针。声明方式:int (*p)[10];//该语句是定义一个数组指针,指向含4个元素的一维数组动态数组定义数组的大小在编译时可能还是未知的,他们随着函数调用的变化而变化,因此,对这些数组只能进行动态存储分配。一维动态数组定义例如,一个长度为n的一原创 2020-12-25 15:10:30 · 202 阅读 · 0 评论 -
GCC笔记
什么是GCCGCC是一种编程语言编译器套件GCC、gcc、g++区别gcc是GCC中的c编译器,g++是GCC中的c++编译器gcc和g++都可以编译c和cpp文件,但存在差异。gcc编译时默认按c来编译,不能链接到c++的库。g++编译时都统一按cpp的语法规则来编译。...原创 2020-12-03 21:18:31 · 96 阅读 · 0 评论 -
虚函数笔记
虚函数虚函数 是在基类中使用关键字 virtual 声明的函数。在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数。我们想要的是在程序中任意点可以根据所调用的对象类型来选择调用的函数,这种操作被称为动态链接,或后期绑定。纯虚函数纯虚函数就是在父类中定义一个虚函数,但又不给它函数体。纯虚函数类似一个说明,说明分类中这个函数就是一个架子一个说明,就是用来让你子类重写的。例子:virtual int area() = 0;...原创 2020-11-20 11:52:45 · 107 阅读 · 0 评论 -
const static 指针引用等笔记
constC++定义常量两种方式1.define 宏常量: #define 常量名 常量值通常在文件上方定义,表示一个常量2.const修饰的变量 const 数据类型 常量名 = 常量值通常在变量定义前加关键字const,修饰该变量为常量,不可修改const修饰指针1.const修饰指针–常量指针2.const修饰常量–指针常量3.const即修饰指针又修饰常量int a = 10;int b = 1;//常量指针,指针指向地址里存放的内容不可以修改,但指针指向的地址可以修改co原创 2020-10-07 21:11:12 · 152 阅读 · 0 评论 -
c++之STL笔记
STL标准模板库标准模板库是为了提高复用性而创建的,它建立了一套数据结构和算法的一套标准。基本概念STL标准模板库从广义上可以分为:容器container算法algorithm迭代器iterator容器和算法之间通过迭代器进行无缝连接STL六大组件STL大体分为六大组件容器算法迭代器仿函数适配器空间配置器容器vectorSTL中最常用的容器为vector,可以理解为数组,也称为单端数组容器: vector算法: for_each迭代器: vector::iterat原创 2020-10-07 19:14:27 · 180 阅读 · 0 评论 -
c++new操作符笔记
c++new语句功能:堆区开辟一组数据语法:new 数据类型注意点:new创建的数据会返回该数据对应的类型指针,另外堆区开辟的数据由程序员手动释放。原创 2020-10-03 16:46:10 · 302 阅读 · 0 评论 -
c++多态的一点笔记
多态满足条件1.有继承关系2.子类重写父类中的虚函数3.父类指针或引用指向子类对象多态的优点1.代码组织结构清晰2.可读性强3.利于前期和后期扩展维护原创 2020-09-29 21:46:20 · 168 阅读 · 0 评论 -
c++中静态多态和动态多态的qubie
c++中静态多态和动态多态的区别静态多态的函数地址早绑定,编译阶段确定函数地址动态多态的函数地址晚绑定,运行阶段确定函数地址原创 2020-09-29 21:41:11 · 210 阅读 · 0 评论 -
关于c++引用的几点笔记
引用引用的作用可以理解为给变量起一个别名,它的语法为:数据类型 &别名 = 原名引用的几点注意事项1.引用必须初始化2.引用在初始化后不可以修改引用作为函数参数作用:函数传参时可以利用引用技术让形参修饰形参,这样做的优点是可以简化指针修饰实参。通过引用参数产生的效果同按地址传递是一样的。引用语法更清楚简单。引用作为函数返回值1.不要返回局部变量的返回值。这是因为局部变量存储在栈区,当函数调用完后栈区数据会被释放,当你使用引用去接收一函数返回值时该内存已经被释放,操作被释放的内存属于原创 2020-09-25 11:31:19 · 91 阅读 · 0 评论 -
c++自减运算符重载
c++自减运算符重载网上看的视频学习的自加运算符重载后写的自减运算符重载,知道自加怎么写后再写自减非常好写。本代码实现的功能是对一个类进行cout自减输出一个类内的参数,其中包含了左移运算符的重载。需要注意的几个点前置递减要返回引用,而后置递减返回的是值。这是因为如果后置递减返回引用那么返回的是一个局部对象的引用,当前函数执行完后局部对象会被释放 。另外一些小技巧值得注意的是不可以用返回值作为函数重载的判断条件,有些时候可以加一个占位符来区分形参个数来添加函数重载。示例代码#include&l原创 2020-09-24 21:02:36 · 354 阅读 · 0 评论 -
c++this指针
this指针的作用是为了解类中非静态成员函数区分被谁调用问题,主要有两个用途当形参和成员变量同名时,可用this指针来区分一般来说形参和成员变量不把它编辑成同一个名称在类的非静态成员函数中返回对象本身可使用* thisthis是指针,指向本身的指针,加一个*进行解引用#include<iostream>using namespace std;class Person{public: Person(int age) { this->age = age; }原创 2020-09-22 21:11:40 · 181 阅读 · 0 评论 -
c++内联函数复习
内联函数在函数说明前冠以inline,该函数就被声明为内联函数,又名内置函数。使用内联函数的原因主要是为了消除系统的开销,以提高运行速度。程序执行调用函数时,系统要将程序当前的一些状态信息存到栈中,同时转到函数的代码处去执行函数体语句,这些参数保存和传递的过程需要时间和空间的开销,会令程序执行效率降低,特别是频繁的调用函数时,这个问题会更为严重。一些说明内联函数第一次调用之前必须被完整定义内联函数体内一般不能有复杂的控制语句,如for switch使用内联函数实际上是一种以空间换时间的措施,所原创 2020-05-14 10:42:34 · 159 阅读 · 0 评论