c++
文章平均质量分 61
Zevin~
这个作者很懒,什么都没留下…
展开
-
迭代器失效与空间配置器
在遍历一个vector容器,删除其中的负元素并复制所有的非负元素。原创 2023-02-27 16:57:01 · 237 阅读 · 0 评论 -
布隆过滤器
把这分别的两份100亿的query查询都放进布隆过滤器,两个地方都存在就是交集,都不存在就不是交集,这个时候是近似的交集(但是会存在不是交集的进去),字符串映射可以有字符串映射的hash函数,把对应的字符串映射到某个位置上,但是如果我们也使用那样的方式会出现什么问题呢?因为我们映射到了3个不同的位置,所以如果一个索引位不在,就不在,但是如果3个索引位都在,它大概率就在,但也会出现误判。分别用精确和近似的算法。这样我们就可以使用布隆过滤器,先进行赛选,不在的话,就没有后续的操作,在的话再去准确的查询。原创 2022-10-24 15:49:33 · 771 阅读 · 5 评论 -
C++位图
我们如果要查看100亿个数中某个数是否存在是完全不合理的,内存根本存放不下这么多的数,会爆炸这样我们就可以用一个bit位来代表一个数例如一个字节8个bit位,其中如果第2位被设置成1,说明2,这个数存在这个也是一种映射关系但是位图只能处理整数,这个就是它最大的问题。原创 2022-10-23 20:19:19 · 481 阅读 · 0 评论 -
哈希
闭散列:开放定址法,当发生hash冲突的时候,如果哈希表未被装满,说明在哈希表中必然还有空的位置,那么就把key存放到下一个“空位置”中去。1.统计每个数字出现次数,范围很集中,可以使用,但是对于随机的一堆整数,就按照范围来开空间,很分散,最好不要这样,假如关键字1234,就把它平方=1522356,取中间3位,223,如果它不够3位,就继续对他进行平方,直到取出3位位置,也存在哈希冲突。本质上就是映射,找到一个值进行映射,把数据映射到对应的地方。冲突的时候,就往后进行探测,直到到达空位置,原创 2022-10-12 16:46:51 · 513 阅读 · 0 评论 -
二叉搜索树
假如我们要查找7:7比3大,到3的右子树=5,7比5大,到5的右子树7,查找到了。例如:我们链接上的节点为10,走到9的右,root即是空,也是9右指针的别名。例如删除10,右为空,10 是9的右节点,把10的左节点,连接到9的右节点上。点往下走,比它大,走右边,比它小走左边,相等就找到了,走到空就说明没找到。10>8,先走右边,到9,10>9走右边,走到了空,把它插入到这个地方。例如删除3,左为空,3是1的右节点,把1的右节点,连接到3的右节点。左子树的值小于根,右子树的值大于根。...原创 2022-08-28 01:23:03 · 133 阅读 · 7 评论 -
C++类型转换
去const属性用const_cast基本类型转换用static_cast多态类之间的类型转换用dynamic_cast不同类型的指针类型转换用reinterpret_cast。原创 2022-08-24 22:45:00 · 378 阅读 · 1 评论 -
C++智能指针
为了解决指针资源忘记或没有删除导致的内存泄露问题,C++就出现了智能指针的机制,可以在使用的时候初始化,在离开作用域之后就自动析构,删除资源。原创 2022-08-23 18:34:37 · 515 阅读 · 5 评论 -
C++包装器
包装器可以对一个可调用对象进行包装可调用对象包括使用包装器可以避免模板实例化出多份代码,可以提高效率。原创 2022-08-22 00:43:03 · 561 阅读 · 8 评论 -
C++ thread库
C++11中提供了thread线程库,它本质上和pthread库差不多,只不过被封装了,同时它还是可以跨平台的。原创 2022-08-20 23:44:59 · 1947 阅读 · 6 评论 -
C++异常
写一个基类异常对象子类异常对象都去继承它//异常的继承体系 class Exception //异常的基类对象 {public :} virtual string what() const //多态 {//错误的描述 int _id;//错误的编号,区分某种错误,对某种错误进行特殊处理 //比如假如说网络错误的话,我们不能直接反馈信息,而是要重复去尝试10次直到不行,才反馈,所以id就是表示错误的编号 };...原创 2022-08-18 14:12:52 · 658 阅读 · 4 评论 -
c++右值引用
右值引用原创 2022-06-24 21:22:34 · 344 阅读 · 1 评论 -
C++11(1)
c++11声明auto自动推导类型,范围for推导对象的类型,可以作为模板参数nullptr避免了NULL 定义为0原创 2022-06-04 22:21:56 · 91 阅读 · 0 评论 -
c++多态
引言多态:多种形态静态的多态:函数重载,同一个函数看起来调用同一个函数有不同的行为动态的多态:静态:是在编译的时候实现的动态的多态一个父类的引用或指针去调用同一个函数,如果传递不同的对象,会调用不同的函数动态:运行时实现的举个例子:买票这个行为,对于不同的人价格不同,普通人去买价格低,而有钱人买价格高扫红包:也是一种多态行为,根据行为去分类,鼓励新用户用,给的红包就多,虚函数子类中满足三同函数名,参数,返回值的虚函数,就叫做重写(覆盖)本质就是不同的人去做同一件事情,结果不同v原创 2022-05-18 21:27:53 · 209 阅读 · 2 评论 -
C++继承
继承的概念与定义继承是对代码进行复用,是类设计层次的复用,让我们的子类可以使用父类的代码class strudent{string name;string id;string address;//...//独自有的//学院,专业,宿舍楼}class teacher{string name;string id;string address;//...//独自有的//职称,科目}虽然这是两种不同的类,但是有很多信息是重复冗余的用一个父类保存共有的信息class原创 2022-05-05 21:04:36 · 1789 阅读 · 6 评论 -
STL中string类的模拟实现
#pragma once#include <string.h>#include <iostream>#include <cassert>#include <cstdio>using namespace std;namespace xzw{ class string { private: char *_str; size_t _size; size_t _capacity;原创 2022-04-04 16:02:31 · 359 阅读 · 1 评论 -
stl--vector
#include<iostream>using namespace std;#include<vector>#include<algorithm>void test_vector1(){ //构造函数初始化 vector<int>v1;//无参, vector<int>v2(10,8);//10个8 vector<int>v3(++v2.begin(),--v2.end());//使用迭代器原创 2022-03-17 17:26:27 · 236 阅读 · 0 评论 -
stl-string
#include<iostream>using namespace std;#include<cstdio>//string就是管理字符串的类#include<string>//库里面定义template<class T>class basic_string{private: T* _str; //...};//编码 --值--符号建立映射关系--编码表(用值和符号建立对应关系) // ASCILL编码表---表示英文编码/原创 2022-03-17 17:25:36 · 238 阅读 · 0 评论 -
C++模板初阶
文章目录引子模板函数模板类模板引子我们以前对于交换两个变量可能会根据其参数类型的不同写不同的函数,但是每个函数除去参数类型之外都是相同的如//交换两个变量//c语言交换void swapint(int *a,int *b){}//c++//c++可以重载void swap(int & a,int& b){}void swap(double& a,double&b){}因此就造成了很大的冗余没有必要,所以就提出了模板的概念模板函数模板模板原创 2022-02-22 20:20:04 · 433 阅读 · 0 评论 -
c++内存管理
文章目录new和deletenew和malloc的区别&delete和free的区别new和delete的应用new和delete的底层operator new和operator delete定位new内存泄漏new和deletenew和malloc的区别&delete和free的区别new动态开辟空间还可以调用其构造函数对其初始化,可以对于之定义类型进行初始化,malloc只会动态开辟空间,不会初始化但是对于内置类型没有区别delete可以完成资源的清理和空间的销毁,对于原创 2022-02-22 19:23:55 · 650 阅读 · 0 评论 -
c++类和对象(下)
文章目录再谈构造函数初始化列表explicitstatic练习再谈构造函数初始化列表类里面的成员变量都是声名而初始化列表里面就可以对变量进行定义1.初始化列表是成员变量定义的地方2.const 引用 ,没有默认构造函数的自定义类型成员变量必须在初始化列表初始化,因为初始化列表就是他们定义的地方,3.对于像其他类型的成员变量,如int year,int month在哪里初始化都可以,影响不大,class Date{private: int _year; int _month;原创 2022-02-02 21:04:30 · 439 阅读 · 1 评论 -
Date类
Date.h#pragma once#include<iostream>using namespace std;class Date{private: int _year; int _month; int _day;public: //构造函数 Date(int year=0, int month=1, int day=1);//缺省参数不能声名和定义都有,最好就声名有就可以了 void Print(); int GetMonthDay(int year, int d原创 2022-01-28 14:40:48 · 670 阅读 · 0 评论 -
c++类和对象(2)
文章目录1.构造函数2.析构函数拷贝构造函数运算符的重载赋值运算符的重载如果我们写了一个空类,那么真的这空类什么都没有吗?答案并不是对于任何一个类对象,都有6个默认成员函数1.构造函数我们每次写一个类的时候,都很有可能会忘记初始化,所以c++就有默认的构造函数,构造函数就是解决初始化的问题1.构造函数(特殊的成员函数)2.他的任务不是开辟空间,而是初始化对象特征1.函数名与类名相同2.没有返回值3.在对象实例化的时候自动调用4.构造函数可以重载5.如果没有显示定义构造函数,编译原创 2022-01-25 16:11:14 · 697 阅读 · 0 评论 -
c++类和对象(1)
文章目录面向对象和面向过程区别类的引入面向对象----编程有三大特性:封装,继承,多态计算类或类对象的大小this指针面向对象和面向过程区别如:设计简单外卖系统面向过程:关注实现下单,接单,送餐=>体现在代码层面—函数/方法面向对象:关注实现类对象及类对象间的关系,用户,商家,骑手以及他们之间的关系,他体现到代码层面–类的设计,以及类之间的关系c++基于面向对象:面向对象与面向过程可以混编(c++兼容c)Java纯面向对象:只有面向对象类的引入定义类可以用struct,class定原创 2022-01-18 21:47:57 · 481 阅读 · 0 评论 -
c++基础语法
auto关键字auto可以自动识别类型,根据右边自动识别类型警告:1.auto不能做函数的参数2.auto不能定义数组3.auto使用的时候不能独立定义,必须给值即auto a=2;这样是不合理的int main(){ const int a = 0; int b = 0; //auto自动推导c的类型,什么类型都可以 auto c = &a;//a的类型是int,c就是int* auto d = 'a';//d是char auto k = 1.1; //typeid原创 2022-01-17 18:25:33 · 348 阅读 · 0 评论 -
c++入门
文章目录命名空间c++的输入输出缺省函数重载引用引用的特性引用的应用1.引用做函数参数2.引用做返回值常引用引用的优点:extern "C"内联函数inline命名空间解决c语言命名冲突问题1.我们自己定义的变量,函数可能和库里面重名冲突2.但是进入公司项目组里面,做的项目通常比较大,多人协助,会导致代码中命名冲突 c语言无法解决这个问题,除非换名字 c++提出了新语法,叫命名空间,3.命名空间里面可以包含各种东西,函数,结构体,变量#include<stdio.h>#inc原创 2021-12-29 23:34:50 · 780 阅读 · 5 评论