顺序表的特点:需要一片连续的存储空间逻辑上相连的数据的存储位置也是相邻的。所以如果我们想要创建一个顺序表我们需要做两件事:向系统申请一片空间供数组使用。创建一个指针记录空间地址。而删除顺序表就是把空间释放,并让指针指向空。顺序表的创建和销毁:#include<iostream>#inclu... ...
具体代码如下:#include<stdio.h>#include<Windows.h>#defineYELLOWFOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSITY#defineCYANFOREGROUND_BLUE|F... ...
为什么要用内存池C++程序默认的内存管理(new,delete,malloc,free)会频繁地在堆上分配和释放内存,导致性能的损失,产生大量的内存碎片,降低内存的利用率。默认的内存管理因为被设计的比较通用,所以在性能上并不能做到极致。因此,很多时候需要根据业务需求设计专用内存管理器,便于针对特定数据结... ...
Thinking in C++ Chapter 2Translator:解释器(interpreter)编译器(complier)编译器编译程序步骤:预处理器(preprocessor)处理预处理指令编译分为两遍,第一遍解析预处理代码生成节点数,在进行第二步之前进行全局优化(global optimiz... ...
测试文件如下内容:myfile.txtFry: One Jillion dollars.[Everyone gasps.]Auctioneer: Sir, that's not a number.数据读取, 测试 。C++中使用ifstream类实现读文件操作,代码如下:实现了:1、以行读取文件... ...
需求背景DB操作有四种基本操作:Insert、Update、Delete和Query,每种操作需要进行功能增强(eg:支持重试、权限校验等),最粗暴的实现就是改动原有接口实现,在实现中加入增强逻辑,这种方式对代码侵入性过高,而且无法控制该逻辑是否需要,如果不需要的话又得重新修改代码实现。可以用装饰者设计... ...
内存池概念1:尽量减少malloc的次数2:频繁申请小块内存空间都造成空间的极大浪费3:利用new和delete运算符重载,替代系统调用4:减少malloc的次数,可在一定程度上提高效率5:用malloc申请一个大块内存,从一大块内存中,一点点分配给用户6:当一大块快用光了,再申请一大块#include... ...
顺序表的特点:需要一片连续的存储空间逻辑上相连的数据的存储位置也是相邻的。所以如果我们想要创建一个顺序表我们需要做两件事:向系统申请一片空间供数组使用。创建一个指针记录空间地址。而删除顺序表就是把空间释放,并让指针指向空。顺序表的创建和销毁:#include<iostream>#inclu... ...
C++函数模板template<typenameT>voidSwap(T&a,T&b){Ttemp;temp=a;a=b;b=temp;}在使用模板函数时,编译器根据实际的类型生成相应的函数定义。重载的模板并非所有的类型都使用相同的算法,可以像重载常规函数那样重... ...
XML语法第一行是XML文档声明,<>内的代表是元素,基本语法如以下所示。C++常见的是使用tiny库读写,Qt使用自带的库读写;<?xmlversion="1.0"encoding="utf-8"standalone="yes&quo... ...
库文件库是一组预先编译好的方法的集合,是计算机上的一类文件,提供给使用者一些开箱即用的变量、函数或类。库文件分为静态库和动态库,静态库和动态库的区别体现在程序的链接阶段。一般来说,Windows的静态库文件扩展名是 .lib,动态库文件扩展名是 .dll (Dynamic-Link Libraries)... ...
1. list的介绍及使用1.1 list的介绍1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与forward... ...
引言CMake是开源、跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件可以直接拿到其它平台上使用,无需修改,非常方便。一 环境搭建我使用的是ubuntu18.04,安装cmake使... ...
span就是一个连续对象存储的观察者。类似std::string_view是string的观察者。连续的存储,不一定是数组。例如:zero(char(&arr)[10]);//10个元素的数组,sizeof(arr)==10*sizeof(char)==10zero(chararr[]);//... ...
一.span容器span 是 C++20 中引入的一个新的标准容器,它用于表示连续的一段内存区间,类似于一个轻量级的只读数组容器。span 是一个轻量级的非拥有式容器,它提供了对连续内存的引用。span 的主要用途是作为函数参数,可以避免不必要的内存拷贝,并且可以防止悬垂指针和空指针引用的问题。它的定义... ...
在最开始实例化一个IniHelper 可以使用默认的config.ini文件路径,也可以自己传入一个文件路径(读取指定位置的config.ini)1.saveIniConfig();将内存中的配置写入config.ini2.LogIniConfig()打印config.ini3.setIniCo... ...
1.一维前缀和有一个长度为n的数组an:a1,a2…an;对于前缀和:Si= a1+a2+…+ai如何求Si,S[i] = s[i-1]+a[i]前缀和可以快速求出原数组里面一段数的和。比如求一段区间[l,r],如果按照原来的做法,需要循环一遍,O(n),有前... ...
代码JsonSerialize.h#pragmaonce#ifndef_JSON_SERIALIZE_#define_JSON_SERIALIZE_//#include"Util.h"#include<fstream>#include<string>... ...
sort(v.begin(),v.end(),cmp),它是用来对一组序列进行排序的。sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,包含在头文件为#include<algorithm>的c++标准库中。其有三个参数,前两个参数是待排序区间;第三个参数可有可无... ...
一、概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值左<根<右它的左右子树也分别为二叉搜索树之所以又叫二叉排序树,是因为二叉搜索树中序遍历的结果是有... ...