C++
文章平均质量分 52
idiot5liev
研究生机械转码,从零开始学 C++。博客是个人学习的笔记与总结,有问题评论留言,一起进步。
展开
-
【C++】二维数组、指针数组 new 及 delete 用法,hash_map demo 实现
目录&索引一、前言二、new 指针数组 hash_map demo 实现三、小结一、前言C++ 堆空间变量,包括平时写算法题,常常用的是 new 单一变量,偶然发现自己不会 new 二维数组即 new 指针数组,说实话有点对自己失望,故总结此文,并附上 hash_map demo 实现。二、new 指针数组 hash_map demo 实现代码验证:// 简易 hash_map 原理及实现#include <iostream>using namespace std;原创 2021-08-05 17:02:04 · 1625 阅读 · 0 评论 -
【C++】ios::sync_with_stdio(false) 与 cin.tie(nullptr) 加速 IO
目录&索引一、前言题目二、ios::sync_with_stdio(false)三、cin.tie(nullptr)四、小结一、前言前面遇到大数据量(cin、cout 数据量级达到 1e5、1e6 ),考虑因为 IO 性能报错 TLE 选择 scanf、printf 替代 cin、cout,故解决问题,却没有深入研究其中的原因。只知关键词——同步,虽本质相同但差之千里,故记录本文。针对上述场景,这两天开始打的 LC 的周赛发现不少选手用的下述代码:// 已做相关改进,包括 cin.tie(原创 2021-07-11 10:28:25 · 5970 阅读 · 6 评论 -
【C/C++】负数的右移运算
目录&索引1 计算机中数的二进制存储规则1.1 案例分析1.2 规则总结2 负数的右移运算3 正数的取反运算4 小结1 计算机中数的二进制存储规则1.1 案例分析你能看懂以下的运算吗?如果暂时还不行,请往下读,让我们一起把二进制存储规则彻底搞明白。#include <iostream>using namespace std;int main() { int n = -100; n = n >> 4; cout << n &l原创 2021-04-27 14:46:07 · 3423 阅读 · 3 评论 -
【C++】设计模式全解析——访问者模式(code c++)
目录&索引访问者模式程序代码懒汉式:加 lock,线程安全饿汉式:线程安全结论访问者模式在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。==通过这种方式,元素的执行算法可以随着访问者改变而改变。==这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。程序代码懒汉式:加 lock,线程安全#include <iostream>#include <mutex&g原创 2021-04-17 20:48:57 · 1437 阅读 · 1 评论 -
【C++】设计模式全解析——单例模式(code c++)
目录&索引单例模式程序代码饿汉式:线程安全,注意 delete懒汉式:加 lock,线程安全结论单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁。何时使用:想控制实例数目,节省系统资源的时候。如何解决:判断系统是否已存在单例,如果有则返回,没有则创建。关键代码:默认构造私有,拷贝构造私有(删除)。单例的实现主要有两种:懒汉式和饿汉式懒汉:故名思义,不到万不得已就不会去实例化类,也就是说在第一次用到类实例的时候才会去实例化原创 2021-04-17 17:53:17 · 210 阅读 · 0 评论 -
【C++】自定义实现 vector 模板类(code c++)
目录&索引程序代码自定义实现 vector 模板类 code c++运行结果结论程序代码自定义实现 vector 模板类 code c++#include <iostream>#include <vector>using namespace std;class A {public : A() = delete; A(int x) : x(x) {} friend ostream &operator<<(ostrea原创 2021-04-13 14:34:16 · 1082 阅读 · 0 评论 -
【C++】自定义实现可配置哈希函数的哈希表类(code c++)
目录&索引功能与不足简述程序代码实现可配置哈希函数的哈希表类 code c++运行结果结论功能与不足简述如 HashTable 类定义所示,自定义实现 insert、erase、find、中括号访问及扩容等方法。不足——通过源码阅读扩容,其扩容发生包括如下三个方面:初始化、处理哈希冲突满足拉链长度且不满足 capacity、size 占到 capacity 一定比例。诸如此类,详见下文代码,尚待优化。扩容性能分析——rehash、创建新的数组、遍历放到新的数组。思考:其一,从避免扩容角度出原创 2021-04-12 23:55:18 · 476 阅读 · 1 评论 -
【C++】自定义实现 priority_queue——用 vector、堆实现(code c++)
目录&索引程序代码实现 priority_queue——用 vector、堆排实现 code c++运行结果结论程序代码实现 priority_queue——用 vector、堆排实现 code c++#include <iostream>#include <algorithm>#include <vector>using namespace std;class IQueue { // 实现 priority_queue, 接口定义public原创 2021-04-12 10:34:03 · 418 阅读 · 0 评论 -
【C++】STL中 sort、priority_queue 自定义 cmp 方法汇总(code c++)
目录&索引1 sort 函数中的 cmp1.1 重载小于运算符1.2 自定义 cmp 函数1.3 自定义仿函数1.4 自定义 lambda 表达式1.5 输出结果(逆序)2 priority_queue 中的 cmp2.1 重载小于运算符2.2 自定义仿函数2.3 自定义 lambda 表达式2.4 输出结果(小顶堆)3 结论1 sort 函数中的 cmp1.1 重载小于运算符sort 重载小于运算符,重载示例如下:#include <iostream>#include &l原创 2021-04-01 16:22:10 · 4645 阅读 · 1 评论 -
【C++】面向对象编程,为什么将父类指针用子类实例化?(code c++)
目录&索引实例化概念定义形式为什么将父类指针用子类实例化?目的——实现多态程序代码实现多态 code c++运行结果结论实例化概念定义实例化是指在面向对象的编程中,把用类创建对象的过程称为实例化。是将一个抽象的概念类,具体到该类实物的过程。形式实例化过程中一般由类名 *对象名 = new 类名(参数1,参数2…参数n)构成。为什么将父类指针用子类实例化?目的——实现多态这个实例是子类的,但父类声明,所以正常情况下,访问不到子类中非继承自父类的成员。换句话说,只能访问到子类从父类继原创 2021-03-15 10:17:34 · 1785 阅读 · 0 评论 -
【C++】自定义实现 shared_ptr 智能指针(bug 求助贴)(code c++)
目录&索引程序代码实现shared_ptr智能指针 code c++运行结果结论程序代码实现shared_ptr智能指针 code c++#include <iostream>using namespace std; class A {public : A() { cout << "defualt constructor" << endl; } ~A() { cout <<原创 2021-03-09 21:22:17 · 160 阅读 · 0 评论 -
【C++】运算符重载实现复数类的加减乘除(code c++)
目录&索引程序代码实现复数类的加减乘除 code c++运行结果结论程序代码实现复数类的加减乘除 code c++#include <iostream>using namespace std;class Complex {public : Complex() : real(0), img(0) {} Complex(int real, int img) : real(real), img(img) {} Complex(const Complex原创 2021-03-09 17:01:03 · 2766 阅读 · 1 评论