![](https://img-blog.csdnimg.cn/c80a18e985324e8591b1a12f441b9f0d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
文章平均质量分 81
C++学习过程中笔记以及代码
青衫哥
面向大牛编程,打怪升级中!
展开
-
【C++】C++11之线程库
本文将介绍以下内容:thread类、锁mutex、锁的RAII机制和条件变量condition_variable。原创 2023-07-09 00:13:07 · 363 阅读 · 0 评论 -
【C++】类型转换
介绍C++中四种类型转换:static_cast、reinterpret_cast、const_cast、dynamic_cast 以及RTTI的使用。原创 2023-06-10 17:17:43 · 730 阅读 · 1 评论 -
【C++】特殊类
面试中,考官有时候会问一些特殊类的设计,今天我们来介绍一下常见的特殊类的设计方式。原创 2023-06-10 01:08:44 · 607 阅读 · 0 评论 -
【C++】智能指针
在我们异常一节就已经讲过,当使用异常的时候,几个函数层层嵌套,其中如果抛异常就可能导致没有释放堆区开辟的空间。这样就很容易导致内存泄漏。关于内存泄漏,我也曾在C++内存管理一文中写过。为了觉得这个问题,C++引入了智能指针。原创 2023-06-06 17:03:26 · 761 阅读 · 0 评论 -
【C++】异常
异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的 直接或间接的调用者处理这个错误。原创 2023-05-23 17:49:36 · 611 阅读 · 0 评论 -
【C++】深入剖析C++11新特性
本文用万余字深入讲解C++11的一些特性,其中包含且不仅包含:初始化列表、范围for、右值引用、万能引用、完美转发、lambda表达式……原创 2023-05-16 23:56:08 · 1387 阅读 · 4 评论 -
【C++】位图
关于位图的介绍以及位图的应用。原创 2023-04-16 19:38:01 · 592 阅读 · 0 评论 -
【C++】哈希
讲解哈希结构、哈希碰撞、开散列和闭散列及其模拟实现。原创 2023-04-15 21:13:45 · 2065 阅读 · 2 评论 -
【C++】AVL树
平衡二叉树-AVL树插入思维以及代码实现原创 2023-03-19 18:37:16 · 317 阅读 · 0 评论 -
二叉搜索树
二叉搜索树的使用操作及模拟实现,在此基础上加入了KV的用法来实现词典功能和单词计数功能。原创 2023-03-01 18:53:18 · 528 阅读 · 0 评论 -
【C++】三大特性之多态
多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。例如:我们平时游乐场买票,大人全价,小孩半价。原创 2023-02-07 14:53:42 · 579 阅读 · 2 评论 -
【C++】三大特性之继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。原创 2023-02-03 09:10:03 · 301 阅读 · 0 评论 -
模板进阶篇
【优点】1.模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2.增强了代码的灵活性【缺陷】1.模板会导致代码膨胀问题,也会导致编译时间变长2. 出现模板编译错误时,错误信息非常凌乱,不易定位错误。原创 2023-01-13 21:34:10 · 309 阅读 · 0 评论 -
STL篇之vector
1. vector是表示可变大小数组的序列容器。2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3. 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。原创 2022-12-22 09:00:00 · 1184 阅读 · 0 评论 -
万字string类总结
string类的介绍1. 字符串是表示字符序列的类2. 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。3. string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型(关于模板的更多信息,请参阅basic_string)。原创 2022-11-24 14:27:33 · 1936 阅读 · 17 评论 -
初识C++模板
在写代码时,我们常常因为一个函数的类型不同而不能使用感到困扰。一个简单的交换函数,我们可能都得写好几份使用函数重载虽然可以实现,但是有以下几个不好的地方:1. 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数。2. 代码的可维护性比较低,一个出错可能所有的重载均出错。那么,有没有什么好办法,可以给出一份代码,让编译器替我们来生成我们需要的代码呢?函数模板。原创 2022-11-04 20:46:30 · 123 阅读 · 1 评论 -
C++内存管理
很多人总是听到栈、堆以及静态区之类的说法,但是始终没有一个完整的概念关于C++程序中内存区域的结构分布。这一期,我们来详细介绍一下C++程序中的内存管理。 我们首先看下图:注释:通常来说,我们创建的局部变量和函数中的参数就是放在栈中。而我们之前动态开辟的内存,其实就是开辟在了堆区中。而全局变量以及通过我们 static 设置为静态的数据都会放在数据段。我们可以知道,在C语言中我们用了malloc以及calloc来进行动态的开辟空间,用free来释放空间。那么,在C++中又是如何进行动态的内存管理的呢?原创 2022-10-21 22:23:10 · 6084 阅读 · 13 评论 -
日期类计算器的实现以及运算符重载
众所周知,运算符重载是C++类与对象中非常重要的一环。今天我们介绍内容就是通过模拟实现日期类的计算机,来详细的了解运算符是如何重载的。注:代码给在文末。大致步骤可以分为以下: 1、构建一个 Date 日期类,需要有三个成员变量:年、月、日。 2、写一个构造函数,将传入的年月日的数据利用起来。代码:这一步非常简单,我们只需要判断年月日是否都相等就可以了。代码: 我们需要先比较年,再比较月,最后比较日。思路: 1、先比较年,如果年大于,返回 true。原创 2022-10-14 13:18:15 · 1345 阅读 · 14 评论 -
C++命名空间
在某些书上,我们常常看到 std::cout , std::cin 等词,有很多人不知道前面的 std:: 是什么意思。本期,我们就来介绍一下命名空间。原创 2022-10-10 11:46:32 · 374 阅读 · 12 评论 -
C++: 深拷贝的传统用法和现代用法
深拷贝的两种用法:1、传统用法:用 new 开空间,拷贝过来代码如下://传统写法 //s2(s1) string(const string& s) :_str(new char[strlen(s._str)+1]) { strcpy(_str, s._str); } //s2=s1 string& operator=(const string& s) { if (this != &s) //s1 !=s1 {原创 2022-03-19 20:56:30 · 759 阅读 · 0 评论 -
C++:string实现查找网址的协议名和后缀
用到string接口如下:substr: 建立一个字串,存放字符。find: 查找用到所示符号的位置。代码如下:#include <iostream>using namespace std;//获取协议名string GetProtocol(const string& url){ size_t pos = url.find("://"); if (pos != string::npos) { return url.substr(0, pos -.原创 2022-03-16 21:11:19 · 7150 阅读 · 0 评论 -
c++:指针和引用的区别
有时候在C++工程中可能需要将某些函数按照C的风格来编译,在函数前加extern "C",意思是告诉编译器, 将该函数按照C语言规则来编译。比如:tcmalloc是google用C++实现的一个项目,他提供tcmallc()和tcfree 两个接口来使用,但如果是C项目就没办法使用,那么他就使用extern “C”来解决。 ...原创 2022-02-27 00:12:41 · 9671 阅读 · 0 评论 -
c++ 函数拓展:内联函数
目录1、概念:2、特性:补充:原因:a、宏函数不支持调试。b、宏函数语法复杂,容易出错。c、没有类型安全的检查1、概念:以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销, 内联函数提升程序运行的效率。2、特性:1. inline是一种以空间换时间的做法,省去调用函数额开销。所以代码很长或者有循环/递归的函数不适宜 使用作为内联函数。比特科技 2. inline对于编译器而言只是一个建议,编译..原创 2022-02-26 23:54:34 · 145 阅读 · 0 评论 -
c++ 引用
目录2.1引用的基本使用引用的基本语法2.2引用注意事项1,引用必须要初始化2,引用一旦初始化后,就不可以更改了2.3引用作函数的参数1,值传递2,地址传递3,引用传递2.4引用做函数返回值1,不要返回局部变量的引用2,函数的调用可以作为左值2.5引用的本质2.6常量引用2.1引用的基本使用引用的基本语法例: int &a=b;2.2引用注意事项1,引用必须要初始化...原创 2022-02-15 00:51:25 · 1399 阅读 · 0 评论 -
c++ 内存分区模型
目录全局区代码区栈区堆区new操作符前言:c++程序在执行时,将内存分为四大区域:全局区:存放全局变量和静态变量以及变量。代码区:存放函数体的二进制代码,由操作系统进行管理的。栈区:由编译器自动分配存放,存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收全局区、代码区:放在int main外面和函数外面的变量叫做全局变量 , 在int main中或者函数中的变量叫做普通局部变量 ,在普..原创 2022-02-13 11:36:37 · 478 阅读 · 0 评论