C++
文章平均质量分 89
存放C++语言的内容
小 琛
你什么都没有,却还为我的梦加油
展开
-
libcurl与分片传输、断点续传相关研究
基于libcurl的断点续传、分片传输原创 2022-11-12 14:28:52 · 1657 阅读 · 0 评论 -
C++——std::async和std::thread
C++11中的thread和async原创 2022-11-08 21:59:28 · 1529 阅读 · 0 评论 -
Windows——关于service
Windows service相关内容原创 2022-11-08 20:49:50 · 1026 阅读 · 0 评论 -
Windows——sentry接入C/C++程序
基于C/C++版本的sentry,从安装到植入工程原创 2022-09-28 19:33:27 · 2483 阅读 · 5 评论 -
Windows——CreatFile使用
关于Windows下的api CreateFile的使用总结原创 2022-09-27 16:21:51 · 2367 阅读 · 0 评论 -
《代码大全》学习总结--成为一名精致的开发者
作者:小 琛欢迎转载,请标明出处原创 2022-03-10 15:36:36 · 582 阅读 · 0 评论 -
C++——C++的类型转换
作者:小 琛欢迎转载,请标明出处文章目录C中的类型转换与缺陷C++中的四大类型转换static_castconst_castdynamic_castreinterpret_cast(了解)C中的类型转换与缺陷在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换和显式类型转换。隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败显式类型转化:需要用户自己处原创 2021-07-05 10:18:44 · 94 阅读 · 0 评论 -
C++——右值引用学习总结
作者:小 琛欢迎转载,请标明出处文章目录右值引用的概念右值与左值右值引用的两大用处移动语义(Move Semantics)完美转发(Perfect forwarding)右值引用的概念C++11提出了右值引用的概念,仍然是取别名,但只能对右值操作int&& x =13;double&& y=16.12;右值与左值左值与右值是C语言中的概念,但C标准并没有给出严格的区分方式,一般认为:可以放在=左边的,或者能够取地址的称为左值,只能放在=右边的,或者不能取原创 2021-01-11 18:13:27 · 135 阅读 · 0 评论 -
C++——智能指针
作者:小 琛欢迎转载,请标明出处智能指针的提出78776泰坦探讨探讨探讨探讨探讨探讨探讨探讨他他他555555555555555555555555555555555665与555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555原创 2020-11-02 16:10:17 · 136 阅读 · 0 评论 -
C++——异常的使用
在我们平时写C语言程序时,经常出现会出现一些错误,有些是我们可以预测到的,这些我们可以通过返回错误码,或者设置回调函数打印错误信息等方法处理。但还有些程错误是我们不好预测的,如断错误,这时产生错误我们没有处理就会终止程序,然而我们经常运行程序后遇到错误不希望终止,如我们进程使用一些垃圾软件会闪退,这就是因为他门的程序异常没有处理好,所以遇到预测范围外的错误时,程序就会直接终止。所以为了解决这种情况,在C++里面就提出了异常处理机制,当一个函数无法处理产生的错误时,就抛出异常,让函数的调用者直接或者间接处理从原创 2020-10-28 19:25:54 · 194 阅读 · 0 评论 -
数据结构——哈希思想应用之布隆过滤器
作者:小 琛欢迎转载,请标明出处位图和哈希表的不足假设现有海量数据,例如10亿个字符用哈希表存储,缺点:浪费空间用位图存储用户记录,缺点:不能处理哈希冲突且只能处理整形哈希思想和位图的巧妙结合理想容器:该容器存储思想仍为位图。但却可以存储字符,且可以处理哈希冲突。哈希字符转换在之前的哈希表编写中,哈希拥有一个函数,该函数可以自动识别存储内容。实际的底层实现为:将不同类型转换为整形。哈希转换算法有很多种,其效果就是将一个字符串转换为一个整形的值返回,例如下面的:struct Ha原创 2020-10-27 17:16:12 · 194 阅读 · 0 评论 -
数据结构——哈希思想应用之位图
作者:小 琛欢迎转载,请标明出处引言一道腾讯的题目:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中通常解法:1、直接遍历法:挨个遍历,直到找到为止。效率较差,最坏情况为O(N)2、二分查找法:先排序(O(NlogN)),再利用二分查找: logN3、利用unordered_map和unordered_set(红黑树,哈希表)解决。上面三种方法。效率最高且使用方便程度高的为第三种,但数据量非常大的时候例如40亿,需要的内存也非常大,该方法原创 2020-10-26 11:25:01 · 138 阅读 · 0 评论 -
数据结构——哈希
作者:小 琛欢迎转载,请标明出处内容提要哈希思想(重点)哈希冲突闭散列解决法开散列解决法(重点)哈希思想在之前的存储结构中(搜索树、红黑树),都有其缺点。例如:在查找一个元素时,必须要经过关键值的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(logN ),搜索的效率取决于搜索过程中元素的比较次数。这与其本身特质有关,它们毕竟是一种类似遍历的方法查找。何为理想的搜索方法?可以不经过任何比较,一次直接从表中得到要搜索的元素。 通过某种函数(hashFunc)使元素原创 2020-10-23 16:58:45 · 150 阅读 · 0 评论 -
数据结构——红黑树
作者:小 琛欢迎转载,请标明出处红黑树的概念红黑树,是一种二叉搜索树,它在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。AVL树确保平衡是通过调节平衡因子实现,即每个节点平衡因子绝对值不大于1, 红黑树通过对任何一条从根到叶子的路径上各个结点着色方式的限制,而红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。相比较之前的AVL树,红黑树对于高度的要求比AVL差一些,但由于现代硬件设备的优化,这种差异几乎可以忽略。红黑树的特点红黑树要求:最长路径的长度不会大于最短原创 2020-10-19 17:41:33 · 148 阅读 · 0 评论 -
数据结构——AVL树
作者:小 琛欢迎转载,请标明出处AVL树的概念与定义二叉搜索树在很大程度上优化了查找的效率,但如果插入的数据非常有序(例如下图),则二叉搜索树就会退化成单一的链式结构,这种情况下的查找等操作就非常消耗时间。平衡二叉树就因此引入。定义当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),实现降低树的高度,从而减少平均搜索长度。对于每个节点的平衡因子值_bf,_bf=右子树高度-左子树高度。因此在一棵树的左边插入,平衡因子减一;右边插入平衡原创 2020-10-16 16:21:28 · 384 阅读 · 0 评论 -
C++——topK问题的解决(例:前k个高频单词)
作者:小 琛欢迎转载,请标明出处topK问题的由来生活中,经常性的会有如下场景:现有M总数的东西,其中各个元素的数量不等,从这M个东西中提取数量为前K个的东西来。例如:topK问题的解决分析:该问题最棘手的点在于,在M个东西中,其每个元素的数量并不是唯一的,比如例题中,这些单词的数量确定,但“i”的数量为2,“love”的数量为2。也就是说,我们需要考虑的变量有两个:元素本身、数量。这里就要用STL中的关联性容器解决即:map。解例题首先,巧妙利用map,将map设定为map<原创 2020-10-10 16:25:12 · 566 阅读 · 0 评论 -
C++——关联式容器map和set
作者:小琛欢迎转载,请标明出处关联式容器的意义关联式容器vector、list、deque,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对(下面会进行解释),总结来说就是:之前的容器就像是一个普通的瓶子,里面存放的就是元素本身。而关联式容器就是带标签的瓶子,根据标签来找元素,而标签也是该瓶子的一部分。例如英语字典,一个元素都有英文和中文,英文和原创 2020-10-09 16:53:02 · 319 阅读 · 0 评论 -
数据结构——二叉搜索树
作者:小 琛欢迎转载,请标明出处引言二叉树是数据结构中的一个常见结构,而二叉搜索树则是一种特殊的二叉树,是高阶数据结构(如AVL树、红黑树)的基础。二叉树的特点二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树若它的左子树不为空,则左子树上所有节点的值都小于根节点的值。若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。它的左右子树也分别为二叉搜索树。平衡二叉树的几个重要操作查找1.若树为空,则返回nullptr。2.不为空,则看下图:插入当原创 2020-09-23 20:42:01 · 192 阅读 · 0 评论 -
C++——“多态”的底层实现,看了之后保你理解
作者:小 琛欢迎转载,请标明出处什么是多态?完成某一行为,不同对象去做,会有不同的效果多态的条件必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,子类继承了父类,且派生类必须对基类的虚函数进行重写析构函数是否要写成虚函数?举例子,...原创 2020-05-29 11:11:57 · 396 阅读 · 0 评论 -
C++——什么时候析构函数需要写成虚函数
作者:小 琛欢迎转载,请标明出处引言:什么情况下析构函数最好定义为虚函数?为什么?答:在实现多态时。在实现多态时,当一个类被作为基类并且该基类对派生类的对象进行操作,在析构时防止只析构基类而不析构派生类的状况发生。把基类的析构函数设计为虚函数可以在基类的指针指向派生类对象时,用基类的指针删除派生类对象,避免内存泄漏。举例分析#include <iostream>class A{public: ~A() { std::cout << "delete A" &l原创 2020-05-29 10:02:09 · 906 阅读 · 0 评论 -
C++——多态的概念
作者:小 琛欢迎转载,请标明出处多态的定义完成某一行为,不同对象去做,会有不同的效果例如:微信抢红包,每个用户都做的同一件事情即点击红包进行抢,但对应的每个用户抢得的金额不同。衍生到程序代码层面:多态是在 不同继承关系的类对象,去调用同一函数 ,产生了不同的行为。多态的构成条件必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,子类继承了父类,且派生类必须对基类的虚函数进行重写下面来解释这两个条件的具体含义。首先在编写多态程序的时候,希望父对象里的某个函数能实现多态功原创 2020-05-28 16:02:55 · 426 阅读 · 0 评论 -
C++——面试必考:菱形继承与菱形虚拟继承
作者:小 琛欢迎转载,请标明出处继承的概念继承呈现了面向对象程序设计的层次结构,是设计层次的服用。继承后父类的成员(成员函数+成员变量)都会变成子类的一部分,我们将新类称为派生类。如下例,teacher中继承了person的print()函数与相关变量。#include <iostream>class person{public: void print() { std::cout << name << "->" << age原创 2020-05-26 11:03:46 · 286 阅读 · 0 评论 -
C++——vector的模拟实现
作者:小 琛欢迎转载,请标明出处该博文实现vector的简单模拟,代码中带有注释便于理解#pragma once#include <iostream>#include <assert.h>namespace kc{ template<class T> class vector { public: typedef T* iterator; typedef const T* const_iterator; //无参构造函数 vector原创 2020-05-25 15:35:42 · 120 阅读 · 0 评论 -
C++——string的模拟实现
作者:小 琛欢迎转载,请标明出处引言:string的模拟实现是面试中的一道常考题目,本博文简单实现一下,代码中带有注释。#include <iostream>#include <assert.h>namespace chen{ class string { public: typedef char* iterator; //定义迭代器 //构造函数 string(const char* str = "") :_size(strlen(str))原创 2020-05-18 17:46:44 · 127 阅读 · 0 评论 -
C++——string类现代写法的解析
作者:小 琛欢迎转载,请标明出处在写string类的时候,由于深浅拷贝的问题,拷贝构造函数与赋值运算符重载都需要自行编写,而在面试中遇到该类问题,传统写法往往不能令面试官满意。传统写法:string(const string& s1){ _str = new char[s1._size + 1]; strcpy(_str, s1._str); _size = s1._siz...原创 2020-04-24 12:01:02 · 188 阅读 · 0 评论 -
C++——深浅拷贝问题
作者:小 琛欢迎转载,请标明出处string中的拷贝构造#include <iostream>namespace K{ class string { public: //构造函数 string(const char* str = " ") :_size (strlen(str)) { _capacity = _size; _str = ne...原创 2020-04-17 16:31:49 · 255 阅读 · 0 评论 -
C++——字符串中的第一个唯一字符
作者:小 琛欢迎转载,请标明出处原创 2020-04-10 09:27:37 · 1841 阅读 · 1 评论 -
C++——模板的初识
作者:小 琛欢迎转载,请标明出处。C语言面对数据类型不同时候的瑕疵C++语言的诞生是基于C语言的,很多C++的内容都是用于解决C语言的不足。在使用C进行编程的时候,常常会有以下情况1、某函数是为了实现一个功能的,但参数类型有很多种例:交换函数。该函数为了实现两个值的交换,但实际情况中数据的类型多种多样,为了保证程序不会报错和警告,C的解决办法就只能每个都写一份。这就会导致代码非常的繁杂!...原创 2020-04-07 16:39:07 · 178 阅读 · 0 评论 -
C++——malloc/free和new/delete的区别
作者:小 琛欢迎转载,请标明出处使用方法malloc和freevoid Test (){ int* p1 = (int*) malloc(sizeof(int)); free(p1); int* p2 = (int*)calloc(4, sizeof (int)); int* p3 = (int*)realloc(p2, sizeof(int)*10);//扩容 fre...原创 2020-03-31 11:04:55 · 129 阅读 · 0 评论 -
C++——实现一个日期类
作者:小 琛欢迎转载,请标明出处引言:该博文将结合相关类的知识,简单应用来实现一个日期类,以巩固所学。#include <iostream>using namespace std;class Date{public: void Print(Date& d) { cout << d._year << "-" << d._...原创 2020-03-25 21:57:14 · 431 阅读 · 0 评论 -
C++类中的6个默认成员函数
作者:小 琛欢迎转载,请标明出处引言:类的6个默认的成员函数包括:构造函数析构函数拷贝构造函数赋值运算符重载函数取地址操作符重载const修饰的取地址操作符重载。这里默认的意思是如果你不定义,则编译器会自动生成,而在实际操作中,我们往往自己实现前四个,后两个让编译器自动生成构造函数构造函数,顾名思义,为对象分配空间,进行初始化。它是一种特殊的成员函数,具有以下特点:...原创 2020-03-16 23:12:46 · 353 阅读 · 0 评论 -
C++——面试常考问题,“this”指针
作者:小 琛欢迎转载,请标明出处引言:在C++面试中经常会问以下几个问题什么是this指针?作用是什么?this指针存在哪里?this指针可以为空吗?该博文就来解读this指针什么是“this”指针?作用是什么?class Date{ public : void SetDate(int year , int month , int day) { _year = ye...原创 2020-03-16 14:45:09 · 923 阅读 · 1 评论 -
C++——为什么C++支持函数重载而C语言不支持
作者:小 琛欢迎转载,请标明出处原创 2020-03-09 16:55:40 · 276 阅读 · 0 评论