动态内存与智能指针 C++程序运行时,将内存分为四个区域,即:代码区、全局区、栈区、堆区。 代码区:存放函数体内的二进制代码,有操作系统管理。 全局区:存放全局变量,静态变量以及常量。 栈区:由编译器自动分配和释放,存放函数参数,局部变量等 堆区:由程序员分配释放,若程序员未释放,则程序结束之后,编译器自动释放。 其中堆区(heap)的一般使用一对…
1. string 1.1 基本概念 string是C++风格的字符串,本质上是一个类。在头文件 <string> 中。string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。 string和char * 区别: char * 是一个指针; string是一个类,类内部封装了char * ,管理这个字符串…
1. 算法介绍 贪心算法(Greedy Algorithm,又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解,但未必是全局最优解。 贪心算法一般分为四步: 将问题分解为若干个子问题 找出适合的贪心策略 求解每一个子问题的最优解 将局部最优解堆叠成全局最优解 使…
0. 排序算法概述 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 1. 选择排序(Selection Sort…
最近开始学习Linux相关知识,参考视频是b站韩顺平老师的《2021韩顺平 一周学会Linux》,使用的Linux系统是CentOS 7.6。 零、课程概述 一、Linux基础 1. Linux安装 学习Linux首先要有一个能用的Linux系统。这里主要有三种方式,分别是直接在电脑上安装双系统、在虚拟机中安装Linux系统以及购买现成的Linux…
1. 编程语言 编程语言是实现思想和算法的基础,所有想法最终都需要使用某种语言来实现。由于之前做项目接触过挺多 C++,只是没有系统学习过。再加上本身对底层操作也比较感兴趣,因此选择 C++ 作为编程语言。 豆瓣上评分较高的书有《C++ Primer》,但这本书写的过于全面详细,上来看这么厚一本书不光浪费时间,还容易被劝退。因此可以从《Essent…
1. 极限学习机简介 极限学习机(Extreme Learning Machine, ELM)最早于2004年由南洋理工大学的Guang-Bin Huang、Qin-Yu Zhu和Chee-Kheong Siew提出,并发表于当年的IEEE国际交互会议(IEEE International Joint Conference)中,目的是为了对反向传播…