
C/C++
文章平均质量分 73
C/C++编程
一记绝尘
人的全部本领无非是耐心和时间的混合物
展开
-
C语言自学笔记
C语言自学笔记1. C语言编程预备知识配合视频《郝斌C语言自学教程》1. C语言编程预备知识CPU,内存条,硬盘,显卡,主板,显示器,之间的关系例如要打开一部电影,鼠标双击电影,硬盘中的电影数据调入到内存条里面,CPU对内存条中的数据进行处理,如果是图像,就通过显卡在显示器上输出,如果是声音就通过声卡,发出声音;主板将这些模块连接在一起。Hello World 程序是如何运行起来的什么是数据类型...原创 2021-04-19 21:09:33 · 639 阅读 · 0 评论 -
C语言--指针
指针详解--C语言指针的定义指针的分类基本的指针类型指针常见错误配合视频《郝斌C语言自学教程》指针部分指针的定义指针的重要性表示一些复杂的数据结构快速的传递数据,减少了内存的耗用 [重点]使函数返回一个以上的值 [重点]能直接访问硬件能够方便的处理字符串是理解面向对象语言中引用的基础总结:指针是C语言的灵魂地址:内存单元的编号从零开始的非负整数指针:指针就是地址,地址就是指针指针变量就是存放内存单元编号的变量,或者说指针变量就是存放地址的变量指针和指针变量是两个不同的概原创 2021-04-18 13:15:34 · 322 阅读 · 0 评论 -
专题--malloc动态内存分配
动态内存分配1. 传统数组的缺点2. 为什么需要动态分配内存动态内存分配举例_动态数组的构造静态内存和动态内存的比较跨函数使用内存的问题可参考视频《郝斌C语言自学教程》动态内存分配部分1. 传统数组的缺点1. 数组长度必须首先指定,且只能是常整数,不能是变量例子:int a[5]; // okint len = 5; int a[len]; // error2. 传统形式定义的数组,该数组的内存程序员无法手动释放,在一个函数运行期间,系统为该函数中数组所分配的空间会一直存在,直到该函数运行完原创 2021-04-18 10:45:20 · 1005 阅读 · 0 评论 -
queue和deque的区别
queue和deque的区别原创 2022-06-10 15:42:13 · 3281 阅读 · 0 评论 -
谈谈c++11 emplace_back
目录前言一、emplace_back()用法二、为什么要使用emplace_back()emplace_back()和push_back()的区别场景一:考虑是否原地构造场景二:考虑尾插左值和右值前言vector 、string、list等容器提供的所有成员函数,在这些成员函数中,可以用来给容器中添加元素的函数有 2 个,分别是 push_back() 和 emplace_back() 函数。一、emplace_back()用法功能:和 push_back() 相同,都是在 vector 容器的转载 2022-04-30 19:32:45 · 1176 阅读 · 0 评论 -
C++ pair用法及使用sort函数对pair数据进行排序
版权声明:本文为优快云博主「荷叶田田_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/qian2213762498/article/details/81773289pair 默认对first升序,当first相同时对second升序;类模板:template <class T1, class T2> struct pair参数:T1是第一个值的数据类型,T2是第二个值的数据类型。功能:pair将转载 2022-04-24 18:51:51 · 11420 阅读 · 0 评论 -
STL--常用算法
常用算法1 常用遍历算法1.1 for_each1.2 transform2. 常用查找算法2.1 find2.2 find_if2.3 adjacent_find2.4 binary_search2.5 count2.6 count_if3. 常用排序算法3.1 sort3.2 random_shuffie3.3 merge3.4 reverse4. 常用拷贝和替换算法4.1 copy4.2 replace4.3 replace_if4.4 swap5 常用算术生成算法6 常用集合算法6.1 set_ i原创 2021-08-01 15:22:20 · 150 阅读 · 0 评论 -
STL--函数对象
STL--函数对象1. 函数对象1.1 函数对象概念1.2 函数对象使用1. 函数对象1.1 函数对象概念概念:重载函数调用操作符的类,其对象常称为函数对象函数对象使用重载的 () 时,行为类似函数调用,也叫仿函数本质:函数对象 (仿函数) 是一个类,不是一个函数1.2 函数对象使用特点:函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值函数对象超出普通函数的概念,函数对象可以有自己的状态函数对象可以作为参数传递...原创 2021-08-01 12:07:08 · 339 阅读 · 0 评论 -
STL常用容器7--map / multimap 容器
STL常用容器--map / multimap 容器map 基本概念map 构造和赋值map 大小和交换map 插入和删除map 查找和统计map 容器排序#include <map>map 基本概念简介:map 中所有元素都是 pairpair 中第一个元素为 key (键值),起到索引作用,第二个元素为 value (实值)所有元素都会根据元素的键值自动排序本质:map / multimap 属于关联式容器,底层结构是用二叉树实现。优点:可以根据 key 值快速原创 2021-07-30 16:26:23 · 299 阅读 · 0 评论 -
STL常用容器6--set/multiset容器
STL常用容器--set / multiset 容器set 基本概念set 构造和赋值set 大小和交换set 插入和删除set 查找和统计set 和 multiset 区别#include <set>set 基本概念简介:所有元素都会在插入时自动被排序本质:set/multiset 属于关联式容器,底层结构是用二叉树实现。set和multiset区别:set 不允许容器中有重复的元素multiset 允许容器中有重复的元素set 构造和赋值功能描述:创建 se原创 2021-07-30 15:30:28 · 132 阅读 · 0 评论 -
STL常用容器5--list容器
STL常用容器--list容器list 基本概念list 构造函数list 赋值和交换list 大小操作list 插入和删除list 数据存取list 反转和排序#include <list>list 基本概念功能: 将数据进行链式存储链表: list 是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表是由一系列结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域STL 中的链表是一个双向循环链表原创 2021-07-29 18:16:10 · 264 阅读 · 0 评论 -
STL常用容器4--stack和queue
STL常用容器--stack和queuestack 容器stack 基本概念stack 常用接口queue 容器queue 基本概念queue 常用接口stack 容器栈容器,使用时要包含 #include <stack>stack 基本概念概念:stack 是一种先进后出的数据结构,它只有一个出口栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为遍历是不允许元素有改动的,对于栈容器,如要遍历第二个元素,需要栈顶的元素出栈,但是这样就不是遍历了,因此,栈容器不允许遍原创 2021-07-29 10:06:25 · 309 阅读 · 0 评论 -
STL常用容器3--deque容器
STL常用容器--deque容器deque 容器基本概念deque 构造函数deque 赋值操作deque 大小操作deque 插入和删除deque 数据存取deque 排序使用 deque 容器要包含 deque 头文件#include <deque>deque 容器基本概念功能:双端数组,可以对头端进行插入删除操作deque与vector区别:vector 对于头部的插入删除效率低,数据量越大,效率越低deque 相对而言, 对头部的插入删除速度比 vector 快v原创 2021-07-28 19:46:21 · 265 阅读 · 0 评论 -
STL常用容器2--vector容器
STL常用容器--vector容器vector 基本概念vector 基本概念功能:vector 数据结构和数组非常相似,也称为单端数组vector 与普通数组区别:不同之处在于数组是静态空间,而vector可以动态扩展动态扩展:...原创 2021-07-28 11:35:37 · 255 阅读 · 0 评论 -
STL常用容器1--string容器
STL常用容器--string容器原创 2021-07-27 17:16:45 · 296 阅读 · 0 评论 -
C++学习笔记14--STL初识
1. STL初识1.1 STL的诞生1.2 STL基本概念1.3 STL六大组件1.4 STL中容器、算法、迭代器1.5 容器算法迭代器初识1.5.1 vector 存放内置数据类型1.5.2 vector 存放自定义数据类型1.5.3 vector容器嵌套容器1.1 STL的诞生长久以来,软件界一直希望建立一种可重复利用的东西C++的面向对象和泛型编程思想,目的就是复用性的提升大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作为了建立数据结构和算法的一套标准,诞生了STL原创 2021-07-26 17:12:10 · 351 阅读 · 3 评论 -
C++学习笔记13--模板
模板原创 2021-07-25 15:51:53 · 361 阅读 · 0 评论 -
C++学习笔记12--文件操作
文件操作文本文件写文件读文件二进制文件写文件读文件程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件==< fstream>==文件类型分为两种:文本文件: 文件以文本的 ASCII 码形式存储在计算机中二进制文件:文件以文本的二进制形式存储在计算机中, 用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream:读操作fstream:读写操作文本文件写文件步骤1. 包原创 2021-07-22 20:13:09 · 127 阅读 · 0 评论 -
C++学习笔记11--类和对象7--多态
类和对象--多态多态的基本概念多态的基本概念多态是C++面向对象三大特性之一多态分为两类静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定,编译阶段确定函数地址动态多态的函数地址晚绑定,运行阶段确定函数地址...原创 2021-07-22 16:04:40 · 273 阅读 · 2 评论 -
C++学习笔记11--类和对象6--继承
类和对象--继承继承的基本语法继承方式继承中构造和析构顺序继承是面向对象三大特性之一有些类与类之间存在特殊的关系,例如下图中:我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候我们就可以考虑利用继承的技术,减少重复代码。继承的基本语法例如很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同下面分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处普通写法//Java页面class Java{public:原创 2021-07-21 18:43:27 · 254 阅读 · 0 评论 -
C++学习笔记11--类和对象5--运算符重载
类和对象--运算符重载加号运算符重载左移运算符重载递增运算符重载赋值运算符重载关系运算符重载函数调用运算符重载运算符重载对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型加号运算符重载对于内置的数据类型,编译器知道如何进行运算int a = 10;int b = 10;int c = a + b; 可以进行运算对于下面这种情况,编译器无法直接进行运算class Person{public: int m_A; int m_B;}Person p1;p1原创 2021-07-20 21:12:08 · 356 阅读 · 0 评论 -
C++学习笔记11--类和对象4--友元
类和对象--友元全局函数做友元类做友元成员函数做友元生活中你的家有客厅 (Public),有你的卧室 (Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类访问另一个类中私有成员关键字:friend友元的三种实现:全局函数做友元类做友元成员函数做友元全局函数做友元//建筑物类class Bui原创 2021-07-18 21:01:08 · 188 阅读 · 0 评论 -
C++学习笔记11--类和对象3--C++对象模型和this指针
类和对象--C++对象模型和this指针C++对象模型和this指针成员变量和成员函数分开存储this 指针概念空指针访问成员函数const 修饰成员函数C++对象模型和this指针成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上空对象占用内存空间为:1 个字节class Person{ int m_A; // 非静态成员变量 属于类的对象上 static int m_B; //静态成员变量 不属于类对象上 void fu原创 2021-07-17 16:36:11 · 168 阅读 · 1 评论 -
C++学习笔记11--类和对象2--对象的初始化和清理
类和对象--对象的初始化和清理对象的初始化和清理构造函数和析构函数构造函数的分类以及调用对象的初始化和清理生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候也会删除一 些自己信息数据保证安全C++中的面向对象来源于生活,每个对象也都会有初始设置以及对象销毁前的清理数据的设置。构造函数和析构函数对象的初始化和清理也是两个非常重要的安全问题一个对象或者变量没有初始状态,对其使用后果是未知同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题C++利用了构造函数和析构原创 2021-06-26 21:01:14 · 387 阅读 · 1 评论 -
C++学习笔记11--类和对象1--封装
类和对象封装封装的意义C++面向对象的三大特性为:封装、继承、多态C++认为万事万物都皆为对象,对象上有其属性和行为例如:人可以作为对象,属性有姓名、年龄、身高、体重… 行为有走、跑、跳、吃饭、唱歌…车也可以作为对象,属性有轮胎、方向盘、车灯… 行为有载人、 放音乐、放空调…具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类封装封装的意义封装是C++面向对象三大特性之一封装的意义:将属性和行为作为一个整体,表现生活中的事物将属性和行为加以权限控制封装意义一:在设计原创 2021-06-23 19:58:26 · 280 阅读 · 3 评论 -
C++学习笔记10--函数提高
函数提高函数默认参数函数占位参数函数重载函数重载概述函数重载的注意事项函数默认参数在C++中,函数的形参列表中的形参是可以有默认值的。语法:返回值类型 函数名 (参数 = 默认值){}举例1、未使用函数默认参数时int func(int a, int b, int c){ return a + b + c;}int main(){ cout << func(10, 20, 30) << endl; system("pause"); return原创 2021-06-14 14:09:23 · 348 阅读 · 4 评论 -
C++学习笔记9--引用
引用引用的基本使用注意事项引用做函数参数引用做函数返回值引用的本质常量引用引用的基本使用作用:给变量起别名语法:数据类型 &别名=原名int main() { //引用基本语法 //数据类型 &别名 = 原名 int a = 10; //创建引用 int &b = a; cout << "a = " << a << endl; cout << "b = " << b << end原创 2021-06-13 15:40:14 · 284 阅读 · 0 评论 -
C++学习笔记8--内存四区
内存四区程序运行前程序运行后new 操作符C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放,存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放程序结束时由操作系统回收程序运行前在程序编译后,生成了 exe 可执行程序,未执行该程序前分为两个区域代码区:存放CPU执行的机器指令代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可原创 2021-06-13 12:40:54 · 214 阅读 · 0 评论 -
C++学习笔记7--结构体
结构体概念定义和使用结构体数组结构体指针结构体嵌套结构体结构体做函数参数结构体中 const使用场景概念结构体属于用户自定义的数据类型,允许用户存储不同的数据类型定义和使用语法:struct 结构体名 { 结构体成员列表 };通过结构体创建变量的方式有三种:struct 结构体名变量名struct结构体名变量名={成员1值,成员2值…}定义结构体时顺便创建变量//自定义数据类型,一些类型集合组成的一个类型//语法 struct类型名称 { 成员列表 }方法1:struc原创 2021-06-12 15:55:52 · 426 阅读 · 3 评论 -
C++学习笔记6--指针
指针指针的概念指针变量的定义和使用指针所占的内存空间空指针和野指针const 修饰指针指针和数组指针和函数指针的概念指针的作用:可以通过指针间接访问内存内存编号是从0开始记录的,一般用十六进制数字表示可以利用指针变量保存地址指针就是一个地址指针变量的定义和使用指针变量定义语法: 数据类型 * 变量名; //1. 定义指针 int a = 10; //指针定义的语法: 数据类型 * 指针变量名 int* p; //让指针记录 a 的地址 p = &a; cout &l原创 2021-06-11 09:30:10 · 163 阅读 · 0 评论 -
C++学习笔记5--函数
函数定义调用值传递常见样式声明分文件编写定义函数的定义一般主要有5个步骤:1、返回值类型2、函数名3、参数表列4、函数体语句5、return 表达式返回值类型 函数名 (参数列表){ 函数体语句 return 表达式}调用值传递常见样式声明分文件编写函数分文件编写一般有4个步骤创建后缀名为 .h 的头文件创建后缀名为 .cpp 的源文件在头文件中写函数的声明在源文件中写函数的定义创建 .h 文件#include <iostream>原创 2021-06-10 15:16:34 · 85 阅读 · 0 评论 -
C++学习笔记4--数组
C++学习笔记4之数组概述一维数组一维数组的定义方式一维数组数组名冒泡排序概述所谓数组,就是一个集合,里面存放了相同类型的数据元素特点1:数组中的每个数据元素都是相同的数据类型特点2:数组是由连续的内存位置组成的一维数组一维数组的定义方式一维数组定义的三种方式:1. 数据类型 数组名[ 数组长度 ];2. 数据类型 数组名[ 数组长度 ] = {值1,值2, ...};3. 数据类型 数组名[ ] = {值1,值2 ...}; 1. 数据类型 数组名[ 数组长度 ];原创 2021-06-10 14:30:29 · 240 阅读 · 0 评论 -
C++ 学习笔记3--程序流程结构
程序流程结构选择结构if 语句三目运算符switch 语句循环结构while 循环语句do...while 循环语句for 循环语句嵌套循环跳转语句C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构顺序结构:程序按顺序执行,不发生跳转选择结构:依据条件是否满足,有选择的执行相应功能循环结构:依据条件是否满足,循环多次执行某段代码选择结构if 语句作用:执行满足条件的语句if 语句的三种形式单行格式 if 语句多行格式 if 语句多条件的 if 语句单行格式原创 2021-06-06 10:02:32 · 123 阅读 · 0 评论 -
C++笔记2 -- 运算符
运算符算术运算符赋值运算符比较运算符逻辑运算符算术运算符:用于处理四则运算赋值运算符:用于将表达式的值赋给变量比较运算符:于表达式的比较,并返回-个真值或假值逻辑运算符:用于根据表达式的值返回真值或假值算术运算符赋值运算符作用:用于将表达式的值赋给变量比较运算符作用:用于表达式的比较,并返回一个真值或假值逻辑运算符作用:用于根据表达式的值返回真值或假值...原创 2021-05-26 10:35:40 · 100 阅读 · 0 评论 -
C++学习笔记1--数据类型
C++学习笔记1数据类型整型sizeof 关键字实常量作用:用于记录程序中不可更改的数据C++定义的两种方式#define 宏常量通常在文件上方定义,表示一个常量#define 常量名 常量值const 修饰的变量通常在变量定义前加关键字 const , 修饰该变量为常量,不可修改const 数据类型 常量名 = 常量值关键字在定义变量活着常量的时候,不要用关键字C++关键字如下:标识符命名规则标识符不能是关键字标识符只能由字母,数字,下划线组成第一个字符必须原创 2021-05-26 10:26:03 · 431 阅读 · 2 评论 -
Visual Studio2019个人项目推送到github
VS2019项目推送到github例子:C++小项目: 通讯录管理系统推送前:项目文件夹内容打开解决方案,点击(视图–团队资源管理器)点击(主页–项目–管理连接)找到github, 点击连接点击使用浏览器登录(墙厚的话,可能不好翻)登录上之后的样子然后点击菜单栏的(工具–选项),找到源代码管理,保证这里是Git点击界面右下角的(添加到源代码管理–Git)然后到自己的github里面看看,已经有了如果想要公开的话最后项目文件夹里多了一些文件...原创 2021-04-22 19:52:30 · 1623 阅读 · 0 评论 -
VScode编程模块化分文件管理
VScode模块化分文件管理test和cmaklist文件不在sr文件夹里头文件源文件以及,头文件的调用Cmaklist对于子程序,需要添加的内容,只有test.cpp是可执行文件(main函数在里面)原创 2021-03-28 20:28:48 · 937 阅读 · 0 评论