C/C++
_Double_
这个作者很懒,什么都没留下…
展开
-
算法 - 二分查找的三种框架/模式
一、查找某个元素的位置,不存在返回-1: class Solution { public: int search(vector<int>& nums, int target) { //采用基础框架 int left = 0, right = nums.size()-1; while(left <= right){ int mid = left+(right-left)/2;原创 2020-07-16 15:08:44 · 247 阅读 · 1 评论 -
C++与C的区别及对C的增强
语法层次、高级特性、使用场景、效率 (1)运行机制上: C是面向过程编程语言,C++是面向对象编程语言。 (2)适用方向: C语言适合程序体积小、运行效率高的场合,如嵌入式等更接近底层的环境; C++适合更上层、更复杂的场合,以及一些具体业务的场景。 (3)编程语法上: C++具有封装、继承、多态三种特性; C语言不支持重载,C++支持重载; C++相比C语言增加了许多类型安全的功能,如强制类型转换; C++支持范...原创 2020-07-05 21:52:23 · 756 阅读 · 0 评论 -
C++ 内存管理
以32位的CPU为例,其可以寻址空间大小为4Gb,如下图所示: 每个进程都独立拥有4G的逻辑空间,其中0-3G为用户态空间,3-4G为内核态空间,不同进程都拥有自己的逻辑地址,这些逻辑地址映射到不同的物理地址中。 用户态空间虚拟内存分为:代码段txt、数据段data、BSS段、堆区、文件映射区、栈区; (1)代码段:包括只读存储区和文本区,只读存储区存储字符串常量,文本区存储程序的机器码; (2)数据段:存储程序中...原创 2020-07-05 21:50:56 · 133 阅读 · 0 评论 -
C++ 对齐原则
(1)概念: 现代计算机系统中,内存都是依照字节进行划分,理论上讲对于任何类型的变量的访问都可以从任何地址开始,但实际应用中,对特定类型的变量经常在特定内存地址进行访问,需要各种类型的数据按照一定的规则进行布置,而不是顺序的一个接一个排列,字节对齐就是用空间换时间,提高存取效率。 (2)原则: 基本数据类型的自身对齐值:例如,char型数据的自身对齐值为1字节,short类型自身对齐值为2字节,int、float、long类型自身对齐值均为4字节,double类型自身对齐值均为8字节。 结...原创 2020-07-05 21:49:25 · 1360 阅读 · 0 评论 -
C++ 智能指针
(1)什么是智能指针: 智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露(利用自动调用类的析构函数来释放内存)。 原理:智能指针类将一个计数器与类指向的对象相关联,通过计数来记录该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;调用析构函数时,构造函数减少引用计数(如果引用计数减至0,则删除基础对象)。原创 2020-07-03 21:36:32 · 145 阅读 · 0 评论 -
C++ static关键字
(1)全局静态变量: 全局变量前加static,变为全局静态变量;存储在静态存储区,在整个程序运行期间都存在;未初始化的全局静态变量会被初始化为0;全局静态变量在声明他的文件之外不可见。 (2)局部静态变量: 局部变量前加static,变为局部静态变量;存储在静态存储区;未初始化的局部静态变量会被初始化为0;作用域仍未局部,离开作用域后,局部静态变量仍在内存中,但不可访问,知道再次访问到作用域。 (3)静态函数: 在函数返回类型前加static,变为静态函数,函数的定义...原创 2020-07-03 21:29:19 · 1444 阅读 · 0 评论