C++学习
文章平均质量分 89
求知.
这个作者很懒,什么都没留下…
展开
-
C++多态
C++多态原创 2022-07-22 15:52:57 · 391 阅读 · 9 评论 -
const修饰的变量通过指针修改的问题
const全局变量存放在在全局区的,对其只有读权限没有写权限,因此即使通过指针也不能对其进行修改。const局部变量存放在堆栈区的,可以通过指针对其进行修改。const变量在预处理时会进行宏替换,编译器只对其值读取一次。原创 2023-03-26 11:17:40 · 1112 阅读 · 1 评论 -
C++多线程
在C++11之前没有多线程的概念,涉及到的与多线程的相关问题都是与操作系统有关的,例如Windows和Linux下都有各自的多线程接口,这使得代码的可移植性较差。,在指定时间点未到来之前线程如果没有获得锁则被阻塞住,如果在此期间其他线程释放了锁,则该线程可以获得对互斥量的锁,如果超时(即在指定时间内还是没有获得锁),则返回。thread类是防拷贝的,不允许拷贝构造以及赋值,但是可以移动构造和移动赋值,即将一个线程对象关联线程的状态转移给其他线程对象,转移期间不意向线程的执行。更为普遍的,我们可以使用。原创 2023-02-25 23:30:42 · 2034 阅读 · 11 评论 -
C++类型转换
强制类型转换关闭或挂起了正常的类型检查,每次使用强制类型转换前,程序员应该仔细考虑是否还有其他不同的方法达到同一目的,如果非强制类型转换不可,则应限制强制转换值的作用域,以减少发生错误的机会。强烈建议:避免使用强制类型转换,应尽量使用C++提供类型转换方法。RTTI是运行阶段类型识别(Runtime Type Identification)的简称。这是新添加到C++中的特性之一,很多老式实现不支持。另一些实现可能包含开关RTTI的编译器设置。RTTI旨在为程序再运行阶段确定对象的类型提供一种标准方式。原创 2022-10-24 17:46:49 · 670 阅读 · 0 评论 -
C++的IO流
流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出。原创 2022-10-12 11:37:48 · 785 阅读 · 1 评论 -
C++ 异常
异常是一种处理错误的方式,当一个函数发现自己无法处理错误时就可以抛出异常,让函数直接或者间接的调用者处理这个错误。原创 2022-10-04 13:10:29 · 191 阅读 · 0 评论 -
C++智能指针详解
智能指针是存储指向动态分配(堆)对象指针的类。除了能够在适当的时间自动删除指向的对象外,他们的工作机制很像C++的内置指针。智能指针在面对异常的时候格外有用,因为他们能够确保正确的销毁动态分配的对象。他们也可以用于跟踪被多用户共享的动态分配对象。下面我们先分析一下下面这段程序有没有什么内存方面的问题?关于内存泄漏见文章【C++ 内存管理】RAII(Resource Acquisition Is Initialization),也称为 “资源获取就是初始化” ,是一种利用对象生命周期来控制程序资源(如内存原创 2022-10-02 22:45:03 · 1551 阅读 · 0 评论 -
C++11 Lambda表达式的用法与原理
Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。随着C++语法的发展,人们开始觉得上面的写法太复杂了,每次为了实现一个algorithm算法,都要重新去写一个类,如果每次比较的逻辑不一样,还要去实现多个类,特别是相同类的命名,这些都给编程者带来了极大的不便。比如:[=, a]:=已经以值传递方式捕捉了所有变量,捕捉a重复。原创 2022-10-02 15:46:41 · 1297 阅读 · 0 评论 -
C++ 11新特性详解
在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,原创 2022-10-02 15:04:09 · 2499 阅读 · 3 评论 -
哈希原理、模拟封装unordered系列关联式容器及其应用
Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。哈希算法简介:对于两个数据元素的关键字kik_iki和 kjk_jkj(i != j),有kik_iki != kjk_jkj,但有:Hash(kik_iki) =原创 2022-09-17 12:09:33 · 498 阅读 · 8 评论 -
C++ unordered_map和unordered_set的使用
unordered_map在线文档说明unordered_map是存储键值对的关联式容器,其允许通过keys快速的索引到与其对应的value。在unordered_map中,键值通常用于惟一地标识元素,而映射值是一个对象,其内容与此键关联。键和映射值的类型可能不同。在内部,unordered_map没有对按照任何特定的顺序排序, 为了能在常数范围内找到key所对应的value,unordered_map将相同哈希值的键值对放在相同的桶中。原创 2022-09-16 22:50:07 · 2757 阅读 · 1 评论 -
C++模拟实现红黑树并实现对set和map的封装
有了AVL树,为什么还要用红黑树?红黑树和AVL树都是高效的平衡二叉树,增删改查的时间复杂度都是O(log2n)O(log2n),红黑树不追求绝对平衡,其只需保证最长路径不超过最短路径的2倍,相对而言,降低了插入和旋转的次数,所以在经常进行增删的结构中性能比AVL树更优,而且红黑树实现比较简单,所以实际运用中红黑树更多。红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。......原创 2022-08-04 20:56:47 · 443 阅读 · 9 评论 -
C++实现AVL树
C++实现AVL树原创 2022-08-02 10:43:15 · 503 阅读 · 8 评论 -
C++ STL中 set和map介绍以及使用方法
C++ STL中 set和map介绍以及使用方法原创 2022-07-30 18:45:20 · 758 阅读 · 9 评论 -
二叉搜索树详解以及C++实现二叉搜索树(递归和非递归)
二叉搜索树详解以及C++实现二叉搜索树(递归和非递归)原创 2022-07-26 10:20:04 · 794 阅读 · 6 评论 -
C++继承
C++继承原创 2022-07-18 20:38:22 · 351 阅读 · 7 评论 -
C++ 模板进阶篇
C++ 模板进阶篇原创 2022-07-16 22:24:37 · 811 阅读 · 0 评论 -
C++ STL中适配器以及deque(双端队列)的基本认识
C++ STL中适配器以及deque(双端队列)的基本认识原创 2022-07-15 18:06:25 · 765 阅读 · 10 评论 -
C++优先级队列priority_queue详解及其模拟实现
C++优先级队列priority_queue详解及其模拟实现原创 2022-07-15 17:07:34 · 1316 阅读 · 0 评论 -
STL中stack和queue的使用以及模拟实现
STL中stack和queue的使用以及模拟实现原创 2022-07-15 16:35:25 · 155 阅读 · 3 评论 -
STL中list的基本用法以及模拟实现
STL中list的基本用法以及模拟实现原创 2022-07-13 10:03:58 · 526 阅读 · 6 评论 -
STL中vector的用法以及模拟实现
STL中vector的用法以及模拟实现原创 2022-07-11 16:45:47 · 269 阅读 · 3 评论 -
函数栈帧的创建与销毁(超详解)
1、什么是函数栈帧2、理解函数栈帧能解决什么问题3、函数栈帧的创建和销毁解析3.1 什么是栈?3.2 认识相关寄存器和汇编指令3.3 解析函数栈帧的创建和销毁3.3.1 预备知识3.3.2 函数的调用堆栈3.3.3 准备环境3.3.4 转到反汇编3.3.5 函数栈帧的创建3.3.6 函数栈帧的销毁1、什么是函数栈帧我们在写C语言代码的时候,经常会把一个独立的功能抽象为函数,所以C程序是以函数为基本单位的。那函数是如何调用的?函数的返回值又是如何待会的?函数参数是如何传递的?这些问原创 2022-04-24 16:06:52 · 8103 阅读 · 24 评论 -
数据在内存中的存储(包含整型、浮点型在内存中的存储以及大小端的介绍)
数据在内存中的存储原创 2022-05-24 19:38:35 · 339 阅读 · 5 评论 -
实用调试技巧
实用调试技巧原创 2022-05-24 20:35:04 · 185 阅读 · 7 评论 -
指针的进阶
C语言指针进阶原创 2022-06-17 23:24:37 · 176 阅读 · 9 评论 -
C++关键字
C++关键字原创 2022-06-20 01:09:01 · 101 阅读 · 0 评论 -
C++命名空间
C++命名空间原创 2022-06-20 01:23:48 · 226 阅读 · 0 评论 -
C++缺省参数以及函数重载
C++缺省参数以及函数重载原创 2022-06-20 02:17:23 · 336 阅读 · 0 评论 -
C++引用详解
C++引用详解原创 2022-06-20 20:45:45 · 177 阅读 · 0 评论 -
C++内联函数
C++内联函数原创 2022-06-20 20:54:18 · 118 阅读 · 0 评论 -
C++ auto关键字以及范围for的简介
C++ auto关键字以及范围for的简介原创 2022-06-20 21:10:03 · 340 阅读 · 0 评论 -
指针空值nullptr(C++11)
指针空值nullptr(C++11)原创 2022-06-20 21:19:17 · 498 阅读 · 0 评论 -
类和对象(上)
类和对象(上)原创 2022-06-20 22:37:27 · 126 阅读 · 0 评论 -
类和对象(中)
类和对象(中)原创 2022-06-21 18:50:17 · 118 阅读 · 0 评论 -
类和对象(下)
类和对象(下)原创 2022-06-24 00:19:10 · 124 阅读 · 0 评论 -
C++内存管理
C++内存管理原创 2022-06-24 22:41:43 · 269 阅读 · 8 评论 -
C++模板
C++模板原创 2022-06-25 16:20:49 · 603 阅读 · 7 评论 -
STL中的string类的用法以及模拟实现
STL中的string类的用法以及模拟实现原创 2022-07-06 10:27:45 · 313 阅读 · 7 评论