标签:C++
前言 阅读此篇前,可先阅读后缀数组 LCP LCP 就是最长公共前缀,在后缀数组中,(LCP(i,j)) 就代表从 (sa_i) 开始的后缀和从 (sa_j) 开始的后缀的最长公共前缀。 height 的定义 (height[i]=LCP(sa[i],sa[i-1])),即从 (i) 开始的后缀与
什么是后缀数组 后缀数组主要是用来处理字符串的,分为两种方法:倍增法以及 DC3,但由于倍增法通俗易懂,码量小,常数小,所以今天这篇文章我就只介绍倍增法(不可能是因为我不会 DC3) 前缀知识 No.1 基数排序 毕竟sort排序需要 (O(nlog n)),所以并不适合后缀数组,我们便想到了 (
前几天和一个身在美国的码农聊天,一时对中美两国的程序员差异产生了兴趣,于是就跑去收集整理了国内外近5年的开发者统计数据。这算不上一篇技术文章,但我想,了解国外同行的一些潮流或者趋势,或许对我们有所启发,毕竟根据以往的经验,湾区的风也常常吹到国内。 ✎ 数据来源包括StackOverflow、CSD
某日二师兄参加XXX科技公司的C++工程师开发岗位第31面: 面试官:什么是锁?有什么作用? 二师兄:在C++中,锁(Lock)是一种同步工具,用于保护共享资源,防止多个线程同时访问,从而避免数据竞争和不一致。 面试官:有哪些锁? 二师兄:从种类上分,可以分为普通锁、读写锁、递归锁等种类。 二师
一、常见图形界面框架(DirectUI、GUI) 1.题外话,纯属扯O 举两个常用的开发框架,MFC和Qt Widget里面每个控件都是Window,这是和DirectUI最大的区别。下面简单梳理下这个DirectUI与GUI之前错综复杂的爱恨情仇: ① 在侏罗纪时期,传统的Handle式GUI框
最近又有个奇奇怪怪的题目,数据为 (n le 1 times 10^7),并且还要用到排序,普通的排序肯定会超时,然后就发现了一种 (O(n)) 介绍 基数排序(Radix Sort)是桶排序的扩展,它是将整数按位数切割成不同的数字,然后按每个数位分别比较以此来排序。 说详细点,也就是将所有数字统
一:背景 1. 讲故事 很多朋友可能会有疑问,C# 是一门托管语言,怎么可能会有非托管句柄泄露呢? 其实一旦 C# 程序与 C++ 语言交互之后,往往就会被后者拖入非托管泥潭,让我们这些调试者被迫探究 非托管领域问题。 二:非托管句柄泄露 1. 测试案例 为了方便讲述,我们上一个 Event 泄露
一、编译和链接的过程 1、GCC生成可执行文件的总体过程 在日常的开发过程中,IDE总是会帮我们将编译和链接合并,一键式的执行,即使在liunx中,使用命令行来编译一个源文件也只是简单的一句"gcc hello.c"。我们并没有过多的关注编译和链接的运行机制和机理,我想从本质出发,深入了解这些机制
​内存模型 C++在执行程序的时候,将内存方向划分为4个区域: 代码区:存放二进制代码,由操作系统进行管理 全局区:存放全局变量、静态变量、常量,程序结束后由操作系统释放 栈区:存放函数参数、局部变量,由编译器自动分配和释放 堆区:由开发者申请分配和释放,若程序员不释放,程序结束由操
C++ 惯用法之 Copy-Swap 拷贝交换 这是“C++ 惯用法”合集的第 3 篇,前面 2 篇分别介绍了 RAII 和 PIMPL 两种惯用法: RAII: Resouce Acquistion Is Initialization PIMPL:Pointer To Implemetatio
[洛谷]P3378 【模板】堆 方法一 手写堆 最小堆插入 从新增的最后一个结点的父结点开始,用要插入元素向下过滤上层结点(相当于要插入的元素向上渗透) void siftdown(int i) //传入一个需要向下调整的结点编号i,这里传入1,即从堆的顶点开始向下调整 { int t
RAII(Resource Acquisition Is Initialization)资源获取即初始化,是 C++ 中最基本、应用最广范的惯用法(idiom)之一。 RAII 的基本思想是通过构造/析构函数,对资源的获取/释放进行封装,然后借助局部对象的自动生命周期来管理资源。使用 RAII 可
前言   前段时间微软发布了适用于VS Code的C#开发工具包(注意目前该包还属于预发布状态但是可以正常使用),因为之前看过网上的一些使用VS Code搭建.NET Core环境的教程看着还挺复杂的就一直没有尝试使用VS Code来编写.NET Core。不过听说C# 开发工具包提供了一系列功能
一.在Windows上,网上流传的几种方法可以打开目录并定位到指定文件: 1.使用系统调用: 使用system()函数执行操作系统的命令行命令。 在命令行命令中,使用explorer /select, 文件路径来打开目录并选中指定文件。例如: #include <cstdlib>