C++
y果子
愿你成为自己的太阳,无需借助谁的光
展开
-
C++知识点
static控制变量的存储方式和可见性。 (1)修饰局部变量 一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的 话,该变量便存放在静态数据区,其生命周期一直持续到整个程序执行结束。但是在这里要注意的是,虽然用static对局部变量进行修 饰过后,其生命周期以及存储空间发生了变化,但是其作用域...原创 2020-07-29 11:20:31 · 112 阅读 · 0 评论 -
string类的构造、拷贝构造、析构、拷贝赋值函数
//写string类的构造,析构,拷贝函数#include <iostream>#include <string>using namespace std;class String{public: String(const char *str = NULL); // 普通构造函数 String(const String &other); ...原创 2019-09-08 11:00:47 · 419 阅读 · 0 评论 -
sizeof(union) 、sizeof(struct) 和 内存对齐技术
在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是: struct A { int a; short b; int c; char d; }; struct B { int a; short b; char c; int d; }; ...原创 2019-09-05 23:49:48 · 1060 阅读 · 0 评论 -
3. 动态链接库DLL的加载:隐式加载(载入时加载)和显式加载(运行时加载)
静态链接库在链接时,编译器会将 .obj 文件和 .LIB 文件组织成一个 .exe 文件,程序运行时,将全部数据加载到内存。如果程序体积较大,功能较为复杂,那么加载到内存中的时间就会比较长,最直接的一个例子就是双击打开一个软件,要很久才能看到界面。这是静态链接库的一个弊端。动态链接库有两种加载方式:隐式加载和显示加载。隐式加载又叫载入时加载,指在主程序载入内存时搜索DLL,并将DLL载入...原创 2019-07-28 18:18:28 · 425 阅读 · 0 评论 -
2. DLL程序:动态链接库DLL 和 在VS2017中创建dll和显示引用dll文件
DLL 程序的入口函数是 DllMain(),就像 DOS 程序的入口函数是 main()、Win32 程序的入口函数是 WinMain() 一样。前面我们一直在讲的就是DOS程序。DllMain() 函数的原型为:BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpRes...原创 2019-07-28 18:17:49 · 509 阅读 · 0 评论 -
1. 动态链接库(dll)
DLL 是 Dynamic Link Library 的缩写,译为“动态链接库”。DLL也是一个被编译过的二进制程序,可以被其他程序调用,但与 exe 不同,DLL不能独立运行,必须由其他程序调用载入内存。DLL 中封装了很多函数,只要知道函数的入口地址,就可以被其他程序调用。Windows API中所有的函数都包含在DLL中,其中有3个最重要的DLL:Kemel32.dll:它包含那些用...原创 2019-07-28 18:14:31 · 157 阅读 · 0 评论 -
位运算符
位操作是程序设计中对位模式按位或二进制数的一元和二元操作。在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)。操作数只能为整型和字符型数据位运算符用来对二进制位进行操作,Java中提供了如下表所示的位运算符:位运算符中,除 ~ 以外,其余均为二元运算符。操作数只能为整型和字...原创 2019-07-12 14:54:27 · 384 阅读 · 0 评论 -
优先队列 priority_queue
优先队列是一种功能强大的队列,它可以自动排序。头文件:#include<queue>声明的基本格式:priority_queue<结构类型> 队列名;如: priority_queue <node> q; //node是一个结构体,结构体里重载了‘<’小于符号 priority_queue <int,vect...原创 2019-06-29 19:49:03 · 211 阅读 · 0 评论 -
堆排序
堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是...原创 2019-07-09 21:46:39 · 84 阅读 · 0 评论 -
list
list用于控制双向访问的变长元素序列的对象。 使用容器 list 管理元素序列,就像节点双向链接列表,每个都存储的一个元素。标头: <cliext/list>命名空间: cliext类型定义 说明 list::const_iterator (STL/CLR) 受控序列的常量迭代器的类型。 list::const_reference ...原创 2019-07-13 12:00:45 · 137 阅读 · 0 评论 -
STL -- heap堆
STL中没有把heap作为一种容器组件,heap的实现需要更低一层的容器组件(诸如list,array,vector)作为其底层机制。Heap是一个类属算法,包含在algorithm头文件中。STL中关于heap默认调整成的是大顶堆,但却可以让用户利用自定义的compare_fuction函数实现大顶堆或小顶堆。heap的低层机制vector本身就是一个类模板,heap基于vector便...原创 2019-06-27 16:51:44 · 192 阅读 · 0 评论 -
vector用法
介绍1.vector是表示可变大小数组的序列容器。2.就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3.本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的...原创 2019-06-06 14:42:19 · 10414 阅读 · 2 评论