0%

滑动窗口算法,这个算法技巧的思路非常简单,就是利用双指针维护一个窗口,不断滑动,然后更新答案。LeetCode上有差不多10道运用滑动窗口算法的题目,难度都是中等和困难。该算法的大致逻辑如下:

阅读全文 »

概述

容器是储存其他对象的对象。被储存的对象必须是同一类型。

分类:

与java的集合不同!STL容器主要被分为两个部分:

一是序列容器(是一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集。顺序性容器中的每个元素均有固定的位置,除非用删除或插入的操作改变这个位置。顺序容器的元素排列次序与元素值无关,而是由元素添加到容器里的次序决定)(forword_list,list,queue,priority_queue,stack,deque,vector,array)。

阅读全文 »

内存分配方式

简介

在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。   

  • 栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
  • 堆:是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内存。。
  • 自由存储区:是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。
  • 全局/静态存储区:全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。
  • 常量存储区:这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改。

阅读全文 »

priority_queue本质是一个堆。

1.头文件是#include<queue>

2.关于priority_queue中元素的比较

模板申明带3个参数:priority_queue,其中Type 为数据类型,Container为保存数据的容器,Functional 为元素比较方式。

Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector。

阅读全文 »

概念

线程:是操作系统能够进行运算调度的最小单位。是进程中的一个执行流程,一个进程中可以运行多个线程。

进程:是操作系统中资源分配的基本单元,一个执行中的程序的实例。

阅读全文 »