C/C++
C/C++基础语法
wolf鬼刀
明明已经知道结局,但是当结局正真来临时,还是会伤心欲绝
展开
-
STL中算法锦集(四)
STL中算法锦集(四)文章目录STL中算法锦集(四)一、< algorithm >1.std::is_permutation2.std::is_sorted3.std::is_sorted_until4.std::iter_swap5.std::lexicographical_compare6.std::lower_bound7.std::make_heap8.std::max_element一、< algorithm >1.std::is_permutation原型:原创 2020-08-04 19:59:55 · 483 阅读 · 0 评论 -
STL中算法锦集(三)
STL中算法锦集(三)文章目录STL中算法锦集(三)一、< algorithm >1.std::find_if2.std::find_if_not3.std::for_each4.std::generate5.std::generate_n6.std::includes7.std::inplace_merge8.std::is_heap9.std::is_heap_until10.std::is_partitioned一、< algorithm >1.std::find_if原创 2020-08-04 18:29:38 · 590 阅读 · 0 评论 -
STL中算法锦集(二)
STL中算法锦集(二)文章目录STL中算法锦集(二)一、< algorithm >1.std::equal2.std::equal_range3.std::fill4.std::fill_n5.std::find6.std::find_end7.std::find_first_of一、< algorithm >1.std::equal原型:template <class InputIterator1, class InputIterator2> bool原创 2020-08-04 17:19:47 · 629 阅读 · 0 评论 -
STL中算法锦集(一)
STL中算法锦集(一)文章目录STL中算法锦集(一)一、< algorithm >1.std::adjacent_find2.std::all_of3.std::any_of4.std::binary_search5.std::copy6.std::copy_backward7.std::copy_if8.std::copy_n9.std::count10.std::count_if一、< algorithm >虽然这一部分不一定要全部掌握,但是掌握可以更快捷、方便的编程1.原创 2020-08-04 14:29:39 · 609 阅读 · 0 评论 -
绝不重新定义继承而来的缺省值参数
绝不重新定义继承而来的缺省值参数文章目录绝不重新定义继承而来的缺省值参数一、问题引入二、结论一、问题引入 在C++中,只能继承两种函数:虚(virtual)函数和非虚(non-virtual)函数。 而重新定义一个继承而来的带有缺省参数值的虚(virtual)函数永远是错误的虚(virtual)函数是动态绑定缺省参数值是静态绑定class Shape{public: enum ShapeColor{Red, Green, Blue}; virtual void draw原创 2020-07-29 14:00:32 · 449 阅读 · 0 评论 -
区分多种类型的输入输出
区分多种类型的输入输出1.printf函数这个就不说了2.sprintf函数 int sprintf(char *str, const char *format, ...); 作用:是把格式化字符串输出到指定字符串,所以参数比printf多了个char * ,那就是目标字符串的地址头文件:stdio.h函数功能:格式化字符串,将格式化的数据写入字符串中参数:(1)str...原创 2020-01-08 00:27:58 · 1905 阅读 · 0 评论 -
贪吃蛇游戏(二)
贪吃蛇游戏(二)转自大佬(…)#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#include <stdlib.h>#include<windows.h> //光标设计API#include<time.h> //食物随机...原创 2020-01-03 12:32:31 · 1229 阅读 · 0 评论 -
Linux下使用C++操作redis数据库
C++操作redis数据库文章目录C++操作redis数据库一、安装配置hiredis.h二、接口介绍1.**`建立链接:redisConnect`**2.**`执行redis命令:redisCommand`**3.**`释放redisCommand`**4.**`断开连接:redisFree`**5.流水线:Pipelining三、简单封装hiredis一、安装配置hiredis.hC++来操作redis数据库。通过hiredis.h接口来实现,目前只能在Linux环境使用。 下载hiredi原创 2020-07-12 00:22:44 · 4182 阅读 · 3 评论 -
C++静态成员函数访问非静态成员的几种方法
C++静态成员函数访问非静态成员的几种方法文章目录C++静态成员函数访问非静态成员的几种方法方法一:方法二:方法三:方法四:方法一:有一个很取巧的办法,就是在静态函数的形参表里加上实例的地址,也就是class A{public: static void test(A *a) { a->m_a += 1; } void hello() { }private: static int m_staticA; int原创 2020-07-03 18:21:36 · 3155 阅读 · 4 评论 -
C语言实现封装、继承、多态
C语言实现封装、继承、多态文章目录C语言实现封装、继承、多态一. 封装二.继承三. 多态一. 封装C语言中虽然没有类,但有struct和指针。我们可以在一个struct中存入数据和函数指针,以此来模拟类行为。typedef struct _Parent{ int a; int b; void (*print)(struct _Parent *This);}Parent; 封装性的意义在于,函数和数据是绑在一起的,数据和数据是绑在一起的。这样,我们就可以通过简单的一原创 2020-07-03 15:00:03 · 1667 阅读 · 0 评论 -
C语言实现函数重载
C语言实现函数重载文章目录C语言实现函数重载一、C++是如何实现函数重载的二、C++函数的命名规则三、C语言实现函数重载1.可变参数2.函数指针实现参数的重载3.实现参数类型的重载4.完整版一、C++是如何实现函数重载的 C++ 实现函数重载很大程度上依赖与编译器对函数名的 Mangling(损坏,破坏),即 C++ 的源代码被编译后同名的重载函数名字会被破坏,一般是在原函数名前后加上特定的字符串(g++编译器中通过在函数名后面添加参数的后缀),以区分不同重载函数,然后在调用的时候根据参数的不同选择原创 2020-07-03 13:48:18 · 3790 阅读 · 0 评论 -
C++突破private的方案
C++突破private的方案文章目录C++突破private的方案方法一:调用公共成员函数方法二:友元函数方法三:使用 指针与引用访问方法四:指针的类型装换方法五:利用模版合法方法一:调用公共成员函数#include <iostream>using namespace std;class X {private: int a; int b; public: X(): a(3), b(4) {} int geta()原创 2020-07-02 21:02:36 · 1207 阅读 · 0 评论 -
Git使用文档
Git使用文档文章目录Git使用文档一.git简介1.产生历史2. git的两大特点3.安装与配置二、版本创建与回退1.使用2. 工作区和暂存区3. 管理修改4 撤销修改5 对比文件的不同6 删除文件三、分支管理1 概念2 创建与合并分支3案例:4 解决冲突5 分支管理策略6 Bug分支四、使用github1 创建仓库2 添加ssh账户3 克隆项目4 上传分支5 将本地分支跟踪服务器分支6 从远程分支上拉取代码史上最详细的git使用文档!如果看了还不会,就自己花两周时间用C写了一个分布式版本控制系统一原创 2020-06-03 18:35:56 · 585 阅读 · 0 评论 -
Git/SQL/正则表达式练习平台
Git/SQL/正则表达式文章目录Git/SQL/正则表达式一、练习 Git二、练习正则表达式三、练习 SQL下面介绍几个平台,分别是学习 Git、SQL、正则表达式的在线练习平台。一、练习 Git这是个叫做 Learning Git Branching 的项目,是一定要推荐的,如果你只会add .,clone,push,pull,commit 几个命令,更需要练习:这确实是我至今发现的最好的 Git 动画教程,没有之一。想当年我用 Git 就会 add .,clone,push,pull,原创 2020-06-03 17:44:14 · 628 阅读 · 0 评论 -
linux下使用C++操作mysql
linux下使用c++操作mysql文章目录linux下使用c++操作mysql一、常用类型介绍1. MYSQL2. MYSQL_ROW3. MYSQL_FIELD4. MYSQL_RES二、常用函数介绍1. mysql_init()2. mysql_real_connect()3. mysql_query()4. mysql_store_result()5. mysql_num_rows()6. mysql_num_fields()7. mysql_fetch_field()8. mysql_fetch原创 2020-05-17 16:34:23 · 843 阅读 · 2 评论 -
STL中的空间配置器
STL中的空间配置器文章目录STL中的空间配置器1. 什么是空间配置器2. 为什么需要空间配置器3. SGI-STL空间配置器实现原理3.1 一级空间配置器3.2 二级空间配置器3.1 内存池3.2 SGI-STL中二级空间配置器设计3.3 SGI-STL二级空间配置器之空间申请3.3 空间配置器的默认选择3.4 空间配置器的再次封装3.5 对象的构造与释放4. 与容器结合5.总结1. 什么是空间配置器空间配置器,顾名思义就是为各个容器高效的管理空间(空间的申请与回收)的,在默默地工作。2. 为什么原创 2020-05-15 17:27:21 · 613 阅读 · 0 评论 -
STL中sort算法简析
STL里sort算法简析文章目录STL里sort算法简析一、引入二、正解三、源码**`sort的源码`**:**`其中,__introsort_loop便是内省式排序:`**插入排序**快速排序实现代码**函数__lg()防止栈溢出一、引入如果面试官给你出了一道面试题:STL里sort算法用的是什么排序算法? 当你第一眼看到这道面试题是不是心里在暗喜,因为排序讲的是效率,时间复杂度越小越好,并且作为STL的标准算法,更因该注重效率,这时你的脑海里想的肯定是快排 此时如果你回答: STL里的so原创 2020-05-15 16:41:38 · 663 阅读 · 0 评论 -
C++方向复习总结
文章目录一、基础知识1.内存对齐???2. static关键字的作用3. 请你来介绍一下STL的allocaotr4.请你来说一说STL迭代器删除元素5. 请你说一说vector和list的区别,应用,越详细越好6. 请你来回答一下include头文件的顺序以及双引号””和尖括号<>的区别?7. 请你回答一下malloc的原理,另外brk系统调用和mmap系统调用的作用分别是什么?8....原创 2020-04-16 11:46:23 · 1794 阅读 · 0 评论 -
右值引用&线程库
右值引用&线程库文章目录右值引用&线程库原创 2020-03-29 23:02:56 · 799 阅读 · 0 评论 -
C++98&C++11的区别
C++98&C++11的区别文章目录C++98&C++11的区别1. C++11简介2. 自动类型推导auto3. 列表初始化4. 变量类型推导5. 范围for循环6. 返回类型后置语法7. final和override8. =default和=delete9. lambda表达式10. std::move11. std::array12. std::forward_list13...原创 2020-03-29 23:01:50 · 6767 阅读 · 0 评论 -
位图&布隆过滤器&海量数据处理
位图&布隆过滤器&海量数据处理文章目录位图&布隆过滤器&海量数据处理一、位图二、布隆过滤器三、海量数据处理一、位图1. 位图概念:所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的例:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。遍历,时间复杂度...原创 2020-03-29 15:48:48 · 616 阅读 · 0 评论 -
模拟实现map&set
模拟实现map&set文章目录模拟实现map&set1. map的特性2. map的模板参数说明3. map的构造4. map的迭代器5. map的容量与元素访问6. map中元素的修改7. map的模拟实现8. set的模拟实现1. map的特性1. map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。2. 在map中,键值...原创 2020-03-29 14:06:24 · 395 阅读 · 0 评论 -
模拟实现unordered_map&unordered_set
模拟实现unordered_map&unordered_set文章目录模拟实现unordered_map&unordered_set1. std::unordered_map 的定义与特性2. 构造 std::unordered_map:3. 赋值操作4. 迭代器操作5. 容量操作6. 访问操作7. 插入操作8. 删除操作9. 查找操作10. 桶操作11. 模拟实现unorder...原创 2020-03-29 13:22:10 · 496 阅读 · 0 评论 -
浅谈深浅拷贝问题(这里只针对拷贝构造函数和赋值运算符重载)和简易srting类模拟实现
浅谈深浅拷贝问题(这里只针对拷贝构造函数和赋值运算符重载)和简易srting类模拟实现一、什么是浅拷贝:浅拷贝也叫值拷贝、位拷贝,是编译器将被拷贝的对象原封不动的拷贝过来(注意是原封不动的拷贝),也就是编译器只把被拷贝的对象的值拷贝过来而已;如果对象中涉及资源管理问题,就会导致其中一个对象使用完这份资源后,把这份资源给释放了,然而其他共享这些资源的对象以为该资源还存在,当对该资源进行访问操作时...原创 2019-10-27 00:37:56 · 1645 阅读 · 0 评论 -
字符函数和内存函数模拟实现
字符函数和内存函数模拟实现int my_strlen1(const char*str){ assert(str); int count = 0; while (*str != '\0') { count++; str++; } return count;}int my_strlen2(const char*str){ assert(str); if (*str=...原创 2019-10-19 19:14:17 · 301 阅读 · 0 评论 -
时间复杂度和空间复杂度
时间复杂度和空间复杂度一:算法的效率:算法的效率分为两种:第一种是时间效率,第二个是空间效率。时间效率被称作时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要是用来衡量一个算法的运行速度,而空间复杂度主要是用来衡量一个算法所需要的额外空间。因此,评价一个算法的效率主要是看它的时间复杂度和空间复杂度情况。然而,有的时候时间和空间却又是「鱼和熊掌」,不可兼得的,那么我们就需要从中去取一个平衡...原创 2019-11-11 14:14:36 · 1465 阅读 · 0 评论 -
动态内存管理:malloc和free以及new和delete的联系与区别
动态内存管理:malloc和free以及new和delete的联系与区别一、 C/C++中程序内存区域划分:内核空间:Linux系统对自身进行了划分,一部分核心软件独立于普通应用程序,运行在较高的特权级别上,它们驻留在被保护的内存空间上,拥有访问硬件设备的所有权限,Linux将此称为内核空间。栈:又叫堆栈,非静态局部变量和函数参数及返回值都在栈上存储,栈是重上往下增长的。内存映射段:是高...原创 2019-10-23 00:10:36 · 1587 阅读 · 1 评论 -
深度剖析数据在内存中的存储
数据在内存中的存储一、基本数据类型介绍1.char字符数据类型1short短整形2int整形4long长整形4long long更长整形8float单精浮点型4double双精浮点型8构造类型(1).数组(2).结构体类型(3).枚举类型(4).联合类型二、1.整形在内存中的存储:...原创 2019-09-27 09:51:31 · 438 阅读 · 0 评论 -
简易扫雷游戏
简易扫雷游戏#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2#define N 10//打印菜单...原创 2019-09-19 22:43:48 · 367 阅读 · 0 评论 -
简易三子棋游戏
简易三子棋游戏#define _CRT_SECURE_NO_WARNINGS#define ROW 3#define COL 3#include<stdio.h>#include<stdlib.h>#include<time.h>//打印菜单void Muse(){ printf("*****************************...原创 2019-09-17 20:43:29 · 396 阅读 · 0 评论 -
操作符详解
操作符和表达式一、操作符:1.算数操符:+、-、*、/、%其中除了%外的操作都可以作用于整数和浮点数,%超作符的两个操作数必须为整数。2.移位操作符:(不要移动的位数为负数)>>为右移操作符:(相当于除2^i)(1)逻辑位移:左边用0补充,右边丢弃(2)算数移位:左边补符号位,右边丢弃<<为左移操作符:(相当于乘2^i)左边丢弃,右边补0;3.位操作符:...原创 2019-09-19 13:34:46 · 584 阅读 · 0 评论 -
C++中的deque、stack、queue及priority_queue
C++中的deque、stack及queue一、deque1.1 . deque的介绍deque(发音类似“deck”),是双端队列不规则的首字母缩写,双端队列是动态大小的序列式容器,其可以像两端进行伸缩。特定的库可以以不同的方式实现deque,但通常都是一种动态数组。不论在何种情况下,它都允许通过随机访问迭代器直接访问单个元素,可以根据需要动态的伸缩。因此,deque提供了一些与...原创 2020-02-10 17:48:49 · 1813 阅读 · 0 评论 -
C++中的list
C++中的list一、list简介list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序...原创 2020-02-10 16:56:32 · 3478 阅读 · 0 评论 -
C++中的vector
C++中的vector一、vector简介vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了...原创 2020-02-10 16:29:48 · 1689 阅读 · 0 评论 -
C++中的STL
C++中的STL一、什么是STL1.STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架2.STL的发展史原始版本Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这...原创 2020-02-10 15:54:52 · 1588 阅读 · 0 评论 -
C++中的模版
C++中的模版一:范型编程1.什么是范型编程?泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础如何实现一个通用的交换函数呢?void Swap(int& left, int& right){int temp = left;left = right;right = temp;}void Swap(double& le...原创 2020-02-10 14:57:09 · 1685 阅读 · 0 评论 -
C++中多态(二)
C++中多态(二)一、多态的虚函数相关概念:1.虚函数表(和继承的虚基表要注意区分)// 这里常考一道笔试题:sizeof(Base)是多少?class Base{public:virtual void Func1(){cout << "Func1()" << endl;}private:int _b = 1;};答案是8bytes通过观察测...原创 2020-01-06 15:32:50 · 675 阅读 · 0 评论 -
C++中的多态(一)
C++中的多态(一)一、多态的概念1.多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。(即同一事物在不同场景下的不同形态)2.多态的定义和实现条件:a. 必须通过基类的指针或者引用调用虚函数b. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写二、虚函数重写1.虚函数:即被virtual修饰的类成员函数称为虚函数。...原创 2020-01-05 22:46:40 · 446 阅读 · 0 评论 -
C++中的继承(三)
C++中的继承(三)一、复杂菱形继承和菱形虚拟继承1.单继承:一个子类只有一个直接父类时称这种继承关系为单继承2.多继承:一个子类有两个或两个以上的直接父类时,称这种继承关系为多继承。3.菱形继承:为多继承的一种特殊情况二、菱形继承的问题:1.先看一段代码class Person{public :string _name ; // 姓名};class Student ...原创 2020-01-05 22:18:56 · 649 阅读 · 0 评论 -
C++中的继承(二)
C++中的继承(二)一、派生类的默认成员函数前面已经总结过类中的默认的成员函数:类中的默认的成员函数所以,既然是默认,就代表如果我们不显示定义,编译器就会默认生成,那么在继承体系中,派生类的默认成员函数又是什么yang的呢派生类的构造函数必须调用基类的构造函数初始化基类的那一部分成员。如果基类没有默认的构造函数,则必须在派生类构造函数的初始化列表阶段显示调用 。( 一旦基类显示定义非...原创 2020-01-02 15:44:15 · 965 阅读 · 0 评论