源代码大师
希望我的博客,能帮上你解决学习中工作中所遇到的问题
展开
-
C++类模板
类模板1.3.1 类模板语法类模板作用:建立一个通用类,类中的成员 数据类型可以不具体制定,用一个虚拟的类型来代表。语法:template<typename T>类解释:template — 声明创建模板typename — 表面其后面的符号是一种数据类型,可以用class代替T — 通用的数据类型,名称可以替换,通常为大写字母示例:#include <string>//类模板template<class NameType, c原创 2020-11-09 10:34:51 · 1266 阅读 · 0 评论 -
C++通讯录管理系统
通讯录管理系统1、系统需求通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下:添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人显示联系人:显示通讯录中所有联系人信息删除联系人:按照姓名进行删除指定联系人查找联系人:按照姓名查看指定联系人信息修改联系人:按照姓名重新修改指定联系人清空联系人:清空通讯录中所有信息退出通讯录:退出当前使用的通讯录2、创建项目创建项目步骤如下:原创 2020-11-04 09:18:02 · 8810 阅读 · 0 评论 -
解析数学表达式 C语言和C++的第三方库有哪些
解析数学表达式 C语言和C++的第三方库有哪些原创 2024-11-27 19:29:09 · 166 阅读 · 0 评论 -
数学表达式 数学函数 符号计算的 C语言和C++的第三方库有哪些
数学表达式 数学函数 符号计算的 C语言和C++的第三方库有哪些原创 2024-11-27 19:28:16 · 91 阅读 · 0 评论 -
内存泄露是什么?如何排查?
内存泄露是什么?如何排查?原创 2023-10-30 09:42:01 · 346 阅读 · 0 评论 -
C语言四阶Runge-Kutta算法(附完整源码)
C语言四阶Runge-Kutta算法(附完整源码)原创 2023-04-24 19:33:03 · 235 阅读 · 0 评论 -
C语言实现SHA-1算法(附完整源码)
C语言实现SHA-1算法(附完整源码)原创 2023-04-24 14:33:00 · 539 阅读 · 0 评论 -
C语言实现大数乘法(附完整源码)
C语言实现大数乘法(附完整源码)原创 2023-04-23 19:20:33 · 232 阅读 · 0 评论 -
C语言实现打印斐波那契数列前30项(附完整源码)
C语言实现打印斐波那契数列前30项(附完整源码)原创 2023-04-23 17:52:00 · 615 阅读 · 0 评论 -
C语言实现数组转置(附完整源码)
C语言实现数组转置(附完整源码)原创 2023-04-23 17:09:03 · 626 阅读 · 0 评论 -
C语言实现memset函数功能(附完整源码)
C语言实现memset函数功能(附完整源码)原创 2023-04-23 16:33:08 · 292 阅读 · 0 评论 -
Win32窗口高级列表控件的使用
Win32窗口高级列表控件的使用原创 2023-03-30 11:57:03 · 367 阅读 · 0 评论 -
Win32窗口控件的创建与响应
Win32窗口控件的创建与响应原创 2023-03-30 11:50:04 · 433 阅读 · 0 评论 -
Win32窗口程序的创建流程
Win32窗口程序的创建流程原创 2023-03-30 11:46:46 · 304 阅读 · 0 评论 -
windows 获取磁盘分区信息
windows 获取磁盘分区信息原创 2023-03-30 11:39:13 · 749 阅读 · 0 评论 -
windows 文件的查找与遍历
windows 文件的查找与遍历原创 2023-03-30 11:31:46 · 1140 阅读 · 0 评论 -
c语言实现文件的创建、打开与关闭操作
c语言实现文件的创建、打开与关闭操作原创 2023-03-30 11:25:08 · 264 阅读 · 0 评论 -
Windows编程常用的数据类型
Windows编程常用的数据类型原创 2023-03-30 11:13:27 · 303 阅读 · 0 评论 -
C++:bind使用实例 (附完整源码)
C++:bind使用实例 (附完整源码)原创 2022-12-26 16:32:16 · 297 阅读 · 0 评论 -
C++:有限差分法求解 一个空间维度上的两点边界值问题(附完整源码)
C++:有限差分法求解 一个空间维度上的两点边界值问题(附完整源码)原创 2022-12-26 13:26:20 · 462 阅读 · 0 评论 -
C++实现 B+ 树索引结构实例支持十亿键值存储
C++实现 B+ 树索引结构实例支持十亿键值存储原创 2022-07-02 11:34:29 · 773 阅读 · 0 评论 -
c++结构化绑定
结构化绑定结构化绑定提供了类似其他语言中提供的多返回值的功能。在容器一章中,我们会学到 C++11 新增了 std::tuple 容器用于构造一个元组,进而囊括多个返回值。但缺陷是,C++11/14 并没有提供一种简单的方法直接从元组中拿到并定义元组中的元素,尽管我们可以使用 std::tie 对元组进行拆包,但我们依然必须非常清楚这个元组包含多少个对象,各个对象是什么类型,非常麻烦。C++17 完善了这一设定,给出的结构化绑定可以让我们写出这样的代码:#include <iostream>原创 2022-05-28 11:31:34 · 655 阅读 · 0 评论 -
c++初始化列表
c++初始化列表初始化是一个非常重要的语言特性,最常见的就是在对象进行初始化时进行使用。在传统 C++ 中,不同的对象有着不同的初始化方法,例如普通数组、POD (Plain Old Data,即没有构造、析构和虚函数的类或结构体)类型都可以使用 {} 进行初始化,也就是我们所说的初始化列表。而对于类对象的初始化,要么需要通过拷贝构造、要么就需要使用 () 进行。这些不同方法都针对各自对象,不能通用。例如:#include <iostream>#include <vecto原创 2022-05-28 11:30:26 · 559 阅读 · 0 评论 -
c++if/switch 变量声明强化
在传统 C++ 中,变量的声明虽然能够位于任何位置,甚至于 for 语句内能够声明一个临时变量 int,但始终没有办法在 if 和 switch 语句中声明一个临时的变量。例如:#include <iostream>#include <vector>#include <algorithm>int main() { std::vector<int> vec = {1, 2, 3, 4}; // 在 c++17 之前 const原创 2022-05-28 11:29:12 · 436 阅读 · 0 评论 -
c++decltypet实例
#include <iostream>#include <type_traits>int main() { auto x = 1; auto y = 2; decltype(x+y) z = 3; if (std::is_same<decltype(x), int>::value) std::cout << "type x == int" << std::endl; if (std::is原创 2022-05-28 11:24:08 · 317 阅读 · 0 评论 -
c++autot实例
#include <initializer_list>#include <vector>#include <iostream>class MagicFoo {public: std::vector<int> vec; MagicFoo(std::initializer_list<int> list) { for (auto it = list.begin(); it != list.end(); ++it)原创 2022-05-28 11:21:47 · 378 阅读 · 0 评论 -
c++std::initializer_list实例
#include <iostream>#include <initializer_list>#include <vector>class Foo {public: int value_a; int value_b; Foo(int a, int b) : value_a(a), value_b(b) {}};class MagicFoo {public: std::vector<int> vec; Mag原创 2022-05-28 11:18:52 · 268 阅读 · 0 评论 -
c++constexpr关键字实例
#include <iostream>#define LEN 10int len_foo() { int i = 2; return i;}constexpr int len_foo_constexpr() { return 5;}constexpr int fibonacci(const int n) { return n == 1 || n == 2 ? 1 : fibonacci(n-1) + fibonacci(n-2);}int m原创 2022-05-28 11:16:46 · 346 阅读 · 0 评论 -
c++nullptr关键字实例
#include <iostream>#include <type_traits>void foo(char *);void foo(int);int main() { if (std::is_same<decltype(NULL), decltype(0)>::value) std::cout << "NULL == 0" << std::endl; if (std::is_same<declty原创 2022-05-28 11:14:25 · 345 阅读 · 0 评论 -
c++:什么是并发
c++什么是并发1.1 什么是并发1.2 并发与并行的联系和区别1.2.1 Erlang 之父 Joe Armstrong 的观点1.2.2. Go 发明者之一 Rob Pike 的观点1.2.3 其他观点1.2.4 小节1.1 什么是并发并发(Concurrency)在我们的现实世界中随处可见,以至于我们常常忽略了它的存在,比方说你在工作(假设你是一名程序员,你的工作就是编程)的时候也可以听听自己喜欢的音乐,并且你的耳朵并不会因为手头的工作而忽略了声音的存在(当然,除非你自己有意的去忽略它,但你还是能原创 2022-05-27 19:52:45 · 274 阅读 · 0 评论 -
C++STL源码剖析之vector
STL源码剖析之vector导语vector_Tp_alloc_typepointervector的内存管理vector迭代器正向反向vector的数据结构vector构造与析构vector导语vector的数据安排以及操作方式,与array非常相似。两者的唯一差别在于空间的运用的灵活性,array是静态的,一旦配置了就不能改变,而 vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。下面一起来看一下vector的"内部机制",怎么来实现空间配置策略的。vector在_V原创 2022-05-27 19:45:50 · 420 阅读 · 0 评论 -
C++ STL源码剖析之unordered_map、unordered_multimap、unordered_set、unordered_multiset
C++ STL源码剖析之unordered_map、unordered_multimap、unordered_set、unordered_multiset导语unordered_map与unordered_multimap本质区别unordered_set与unordered_multiset本质区别三大结论unordered_map重要函数导语前面学到了hashtable,而这节是hashtable的容器适配器:unordered_map。所以无序map的底层容器采用hashtable。unord原创 2022-05-27 19:39:56 · 650 阅读 · 0 评论 -
C++typename详解
C++typename详解typename的常见用法类作用域完整例子剖析源码STL底层源码有下面几行,typedef与typename联用,这几个看着好复杂,究竟啥意思,我们今天一起来剖析!template<typename _Iterator>struct iterator_traits{ typedef typename _Iterator::iterator_category iterator_category; typedef typename _Iterator::va原创 2022-05-26 09:52:56 · 789 阅读 · 0 评论 -
C++ STL 源码剖析之 Traits 编程技法
C++ STL 源码剖析之 Traits 编程技法导语template 参数推导声明内嵌型别救世主 Traits函数偏特化加入中间层总结导语在 STL 编程中,容器和算法是独立设计的,即数据结构和算法是独立设计的,连接容器和算法的桥梁就是迭代器了,迭代器使其独立设计成为可能。如下图所示:上图给出了 STL 的目标就是要把数据和算法分开,分别对其进行设计,之后通过一种名为 iterator 的东西,把这二者再粘接到一起。设计模式中,关于 iterator 的描述为:一种能够顺序访问容器中每个元素的方法原创 2022-05-26 09:48:55 · 455 阅读 · 0 评论 -
c++STL之set与multiset
c++STL之set与multiset前言setmultiset前言set/multiset以rb_tree为底层结构,因此有元素自动排序特性。排序的依据是key,而set/multiset元素的value和key合二为一:value就是key。我们无法使用set/multiset的iterators改变元素值(因为key有其严谨排列规则)。set/multiset的iterator是其底部RB tree的const-iterator,就是为了禁止用户对元素赋值。set元素的key必须独一无二,因原创 2022-05-26 09:45:01 · 382 阅读 · 0 评论 -
C++ STL源码剖析之红黑树
C++ STL源码剖析之红黑树导语红黑树节点基类红黑树节点红黑树迭代器红黑树操作红黑树插入旋转过程插入总结使用导语在STL源码中有两段话,简单翻译后如下:STL中Red-black tree(红黑树)class,用来当做SLT关系式容器(如set,multiset,map,multimap).里面所用的insertion和deletion方法以《Introduction to Algorithms》一书为基础,但是有以下两点不同:(1)header不仅指向root,也指向红黑树的最左节点,以便用原创 2022-05-26 09:41:55 · 522 阅读 · 0 评论 -
C++ STL源码剖析之容器配接器stack与queue、priority_queue
C++ STL源码剖析之容器配接器stack与queue、priority_queue导语stackqueuepriority_queue导语为何stack与queue不被称为容器呢?下面本节带着这个问题来深入源码分析。stack在stack的源码中我们关注两点:默认_Sequence为deque内部函数实现是调用_Sequence对应容器的函数。template<typename _Tp, typename _Sequence = deque<_Tp> >clas原创 2022-05-26 09:36:26 · 392 阅读 · 0 评论 -
C++从0到1手写一个哈希表
C++从0到1手写一个哈希表1.简易版哈希表0.导语目的:手写实现一个哈希表,采用拉链法构建,每个hash(key)对应的是一个红黑树。看起来很简单,但可以学到很多东西。实现语言:C++。1.简易版哈希表我们将哈希表封装在一个类中,完成遍历的定义与声明以及构造、析构的实现:template<typename Key, typename Value>class HashTable {private:const static int upperTol = 3;const stat原创 2022-05-25 20:15:02 · 634 阅读 · 0 评论 -
C++ STL源码剖析之实现一个简单的iterator_category
C++ STL源码剖析之实现一个简单的iterator_category导语利用萃取机实现一个简单的iterator_category识别STL源码剖析Iterator导语本节使用上节Traits特性,研究iterator源码,来实现一个简单的iterator_category,同时对iterator的源码结构进行分析。知其然,知其所以然,源码面前了无秘密!利用萃取机实现一个简单的iterator_category识别迭代器是指向序列元素的指针的一种抽象。通过使用迭代器,我们可以访问序列中的某个元原创 2022-05-24 09:59:32 · 391 阅读 · 1 评论 -
C++ STL源码剖析之哈希表
C++ STL源码剖析之哈希表导语Hashtable初识_Hashtable_base_Hash_code_basehashtable中链表的节点结构迭代器仔细研究hashtable的重要内部结构导语哈希表,是作为unordered_map与unordered_set等的底层容器,自gcc2.9后源码量大增!这次阅读的代码仍旧是gcc4.9.1,代码量非常多,就不全部展开,重点研究底层哈希的艺术与技术,似乎这两个词语很押韵哦,哈哈,进入正文~Hashtable初识先来看一眼Hashtable源码:原创 2022-05-24 09:34:58 · 463 阅读 · 0 评论