- 博客(20)
- 收藏
- 关注
原创 什么是死锁?死锁问题解决方案
死锁是操作系统中多进程 / 线程竞争资源时出现的僵局状态,其产生需满足(资源互斥、持有并等待、不可剥夺、循环等待)。解决死锁问题的核心思路是。
2025-09-18 21:28:59
203
原创 静态成员变量和静态成员函数
static成员变量和普通static变量一样,都在内存分区中的全局数据区分配内存,到程序结束时才释放.这就意味着,static成员变量不随对象的创建而分配内存,也不随对象的销毁而释放内存.而普通成员变量在对象创建时分配内存,在对象销毁时释放内存.静态变量初始化时可以赋初值,也可以不赋值,如果不赋值,那么会被默认初始化为0.全局数据区的变量都有默认的初始值0,而动态数据区(堆区,栈区)变量的默认值是不确定的,系统会给这个变量自动赋一个随机的值。
2025-05-27 12:21:05
232
原创 哈希表面试考点
当哈希表的负载因子过高时,重新选择一个更大的哈希表,并重新计算所有键的哈希值,将所有键重新插入到新的哈希表中。哈希函数是哈希表的核心,它将输入的键(key)映射到一个较小范围的整数值(通常是数组的索引)。数据通过哈希算法执行过后产生新的数据存储到哈希表当中, 但是如果数据量庞大, 那么不可避免就有可能两个数据经过这个哈希算法计算过后生成的数据是相同的,这个就是。每个哈希表的槽位存储一个链表,所有映射到该槽位的键值对都存储在链表中。当发生冲突时,检查二次方的槽位,直到找到空闲槽位。
2025-05-23 16:01:58
631
原创 C++的String(重点)
在 C++ 中, 是标准库提供的一个用于处理字符串的类,它位于 头文件中。与 C 风格的字符串(以空字符 结尾的字符数组)相比, 类提供了更安全、更方便的字符串操作方式。
2025-05-19 17:17:36
155
原创 C++的栈
在 C++ 里,栈(Stack)是一种遵循后进先出(LIFO, Last In First Out)原则的线性数据结构。对栈的操作主要集中在栈顶,数据的添加(入栈,push)和删除(出栈,pop)都在此处进行。
2025-05-19 13:39:45
388
原创 C++的队列, 优先级队列
队列是一种先进先出的数据结构。在队列中,元素的添加(入队)通常在队列的一端进行,而元素的移除(出队)则在另一端进行。C++标准模板库(STL)中的std::queue是一个容器适配器,它封装了一个底层容器(如std::deque或std::list)来实现队列的行为。
2025-05-16 14:40:15
488
原创 C++类的继承
继承允许我们依据另一个类来定义一个新的类,这样做达到了重用代码,和提高执行效率.当创建一个类时,不需要重新编写新的成员变量和成员函数,只需要指定新创建的类继承一个已有的类即可,这个已有的类成为基类(父类),新建的类称为派生类(子类)一个类可以继承自多个父类,他可以从多个基类继承数据和函数.此时就会有可能产生二义性问题,解决办法就是加一下父类的域名菱形继承(钻石问题) 当两个派生类继承同一个基类,而另一个类又同时继承这两个派生类时,会导致基类成员重复:(出现二义性)菱形继承可以
2025-05-15 15:27:57
433
原创 C++类的友元
类的友元是定义在类外部,但有权访问类的所有私有成员和受保护成员。友元可以是一个函数,该函数被称为友元函数,友元也可以是一个类,被称为友元类,声明一个友元只需要在类定义中声明一个函数或者一个类并且前面加一个关键字friend。
2025-05-15 09:03:34
238
原创 c++中的类
一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果.this的作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器就会自动将对象本身的地址作为一个隐含参数传递给函数.c++利用构造函数实现了对象所占内存的赋值(即初始化).对象初始化时强制执行构造函数,如果我们自己没有实现构造函数,编译器将会提供默认的构造函数.析构函数是作用于对象销毁工作,清空对象内部指针指向的堆区内存.析构函数是在释放对象的时候自动调用,栈区对象自动释放.
2025-05-14 15:07:28
305
原创 c++的多态
多态性是面向对象编程中的一个核心概念,允许不同类的对象对同一消息做出响应。在C++中,多态性主要通过两种方式实现:静态多态和动态多态。静态多态包括函数重载和模板,它们在编译时确定。动态多态则通过虚函数实现,允许在运行时根据对象的实际类型来调用相应的函数。动态多态的实现依赖于虚函数表(vtable),每个包含虚函数的类都有一个虚表,存储指向虚函数的指针。对象通过内部的虚表指针(vptr)访问虚表,从而实现动态绑定。这种机制提高了代码的灵活性和可维护性,是C++中实现多态性的关键技术。
2025-05-14 15:01:52
514
原创 深拷贝和浅拷贝的区别
等特殊情况)通常是引用传递(可以看作是浅拷贝)。在 Python 中,对于可变对象(如列表、字典),直接赋值是浅拷贝,使用。等)的赋值是值传递(可以看作是深拷贝),而对象的赋值(除了。在其他编程语言中,比如 Java,基本数据类型(如。函数可以实现深拷贝。
2024-11-06 17:30:44
235
原创 C/C++中的vector
相比较与普通的数组int a[10],vector更加便捷,操作性更高,可以替代普通数组的使用。添加元素 vec.push_back(1);删除元素 vec.pop_back();计算数组大小 vec.size();访问数组元素 vec[0];
2024-11-01 22:35:04
703
原创 c/c++中指针和引用的区别
指针:指针是一个变量,其值是另一个变量的地址。可以通过指针来访问和操作其指向的内存。引用:引用是一个别名,它是某个变量的另一个名字。一旦引用被初始化为一个变量,就不能再更改为引用其他变量。指针和引用各有优缺点,选择哪种方式取决于具体的需求和上下文。在需要灵活性和动态内存管理时,指针更为合适;在需要简洁性和安全性时,引用则是更好的选择。
2024-10-31 18:38:27
554
1
原创 C/C++中的指针详解(重点)
指针是一个变量,它存储另一个变量的地址。通过指针,我们可以间接访问和修改存储在该地址的值。类型 *指针变量名;int *p;// p是一个指向int类型的指针。
2024-10-31 15:58:08
861
原创 学习回调函数及回调函数的作用
回调函数(Callback Function)是指作为参数传递给另一个函数的函数,并在特定条件下被调用。回调函数和调用它的函数一同执行。另外占用一个线程,可以提高程序性能。常用于处理异步操作、事件处理和函数式编程。
2024-10-28 22:47:15
355
原创 C/C++中的三种基本控制结构
在 C/C++ 中,基本控制结构主要包括顺序结构、选择结构和循环结构。ifelse ifelseswitchforwhiledo while这些基本控制结构是编写程序的基础,能够帮助我们控制程序的执行流程。在循环语句中对于break和continue的使用也是比较基础的,需要大家掌握。break和continue是 C/C++ 中用于控制循环和 switch 语句执行流程的关键字。它们的使用场景和效果有所不同,下面是详细的解释:1.break。
2024-10-26 22:23:20
404
原创 C/C++运算符详解以及运算符优先级,三目运算符
在 C++ 中,常见的运算符可以分为几类,下面是主要的运算符分类及其示例:1. 算术运算符a + ba - ba * ba / ba % b++++aa++----aa--2. 关系运算符==a == b!a!= ba > ba < b>=a >= b 15. 赋值运算符a = b+=a += b-=a -= b*=a *= b/=a /= b%=a %= b6. 其他运算符。
2024-10-26 00:34:07
779
原创 C/C++中运算符大全详解
逻辑与运算符(&&):当且仅当两个操作数都为 true 时,结果才为 true,例如 (5 > 3) && (7 > 6) 返回 true,因为两个条件都成立。- 等于运算符(==):判断两个值是否相等,如 5 == 5 返回 true,5 == 6 返回 false。- 复合赋值运算符(+=、-=、*=、/=、%= 等):例如 a += 5 相当于 a = a + 5。- 小于等于运算符(<=):左边值小于或等于右边值时返回 true,5 <= 5 返回 true。=):判断两个值是否不相等,6!
2024-10-24 21:16:15
1400
原创 什么是常量和变量?它们在 C/C++ 中有哪些区别?
可以在声明时初始化,也可以先声明后赋值,例如int count = 0;count = 0;定义了一个名为num的整型变量,其初始值为5,但在程序中可以改变num的值。常量在编译时被确定,编译器会在程序中使用常量值的地方直接替换常量(在某些优化情况下)。• 在C++中,常量通常用const关键字来声明,例如const int MAX_VALUE = 100;• const常量的作用域与变量类似,可以是局部的或全局的。• 变量在运行时分配内存,其值存储在内存中的某个位置,在程序执行过程中可以被读取和修改。
2024-10-23 22:14:18
455
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅