![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
加油啊少年
这个作者很懒,什么都没留下…
展开
-
动态规划专题(白菜的进阶之路)
动态规划专题目录动态规划专题最长递增子序列所需要的步骤为要找到各个状态之间的关系以及从前一步到后一步的选择有哪些,明确dp数组或者函数也就是转移方程。最长递增子序列leetcode-300(最长递增子序列)(注意子序列与子串之间的关系,字串一定是连续的,子序列不是连续的但是要保证子序列的稳定性)1.考虑dp[i]与dp[i-1]之间的关系,在这里dp[i]的意义为以第nums[i]个结尾的子序列的最长递增子序列的长度。2.得知前i-1个状态,在求解dp[原创 2020-05-20 16:07:37 · 294 阅读 · 0 评论 -
c++第16章 模板与泛型编程(一)
模板与泛型编程函数模板我们可以定义一个通用的函数模板(function tempalte),而不是为每个类型都定义一个新函数。一个函数模板就是一个公式,可以用来生成针对类型的函数版本,例如以下的compare函数:template <typename T>int compare(const T &v1,const T &v2){ if(v1 &...原创 2019-11-14 20:40:24 · 104 阅读 · 0 评论 -
C++ 第15章 面向对象程序设计(二)
派生类向基类转换的可访问性:派生类向基类的转换是否可访问由使用该转换的代码决定,同时派生类的派生访问说明符也会有影响,假定D继承B:1.只有当D公有地继承B时,用户代码才能使用派生类向基类的转换;如果D继承B的方式是私有的或者是受保护的,用户代码则不能使用该转换。2.不论D以什么样的方式继承B,D的成员函数和右元都能使用派生类向基类的转换,派生类向其直接基类的类型转换对于派生类的成员和...原创 2019-11-14 11:29:00 · 104 阅读 · 0 评论 -
C++ 第15章 面向对象程序设计(一)
面向对象的程序设计(OPP)面向对象设计的核心思想就是数据抽象、继承和动态绑定。通过抽象我们可以将类的接口与实现分离;使用继承,可以定义相似的类型并对其相似关系建模;使用动态绑定,可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象。继承通过继承联系在一起的类构成一种层次关系,通常在层次关系的根部有一个基类,其他类则直接或间接的从基类继承而来,这些继承得到的类为派生类。...原创 2019-11-04 17:39:11 · 118 阅读 · 0 评论 -
C++ 第14章 重载运算与类型转换(二)
重载运算与类型转换(二)函数调用运算符//函数调用运算符struct absInt{ int operator() (int val) const{ return val < 0 ? -val : val; } };函数调用运算符必须是成员函数,一个类可以定义多个不同版本的调用运算符,相互之间应该在参数数量或类型上有所区别一个重载...原创 2019-10-30 11:36:48 · 199 阅读 · 0 评论 -
C++ 第14章 重载运算与类型转换(一)
重载运算与类型转换(一)基本概念重载运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号构成。重载运算符也包括返回类型,参数列表以及函数体。当一个重载的运算符是成员函数时,this绑定到左侧运算对象。成员运算符函数的(显式)参数数量比运算对象少一个。运算符可否被重载框图通常情况下,不应该重载逗号,取地址,逻辑与和逻辑或运算符。如何选...原创 2019-10-28 23:40:48 · 132 阅读 · 0 评论 -
C++ Primer——Sales_item.h头文件源码及相关问题解决
在C++ Primer 第五版中有一个小练习要将网站上的头文件源码“拷贝到工作目录中”,首先,似乎并没有那个网站,源码也是百度资源上找的。其次,拷贝到工作目录中,添加头文件有个小细节。源码如下:#ifndef SALESITEM_H#define SALESITEM_H#include <iostream>#include <string>class Sale...转载 2019-10-26 16:07:25 · 406 阅读 · 0 评论 -
C++排序算法之冒泡排序
冒泡排序冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中...原创 2019-10-25 11:07:16 · 310 阅读 · 1 评论 -
C++中排序算法之插入排序
插入排序插入排序(Insertion sort)是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序...原创 2019-10-25 10:12:04 · 383 阅读 · 1 评论 -
C++ 二分法
1. 二分法查找是一种非常高效的搜索方法,主要原理是每次搜索可以抛弃一半的值来缩小范围。2. 二分法查找的时间复杂度是O(logn)3. 二分法查找的适用情况一般满足以下几点:(1). 该数组数据量巨大;{2}. 该数组已经排序;(3). 一般要求找到的是某一个值4. 判定该题需要用到二分法的条件:(1). 需要对一道时间复杂度为n的题目进行优化;(2). 在题目中提到给到的数组已排序...原创 2019-10-24 22:12:52 · 1450 阅读 · 2 评论 -
C++第13章 拷贝控制 第一节
拷贝、赋值与销毁拷贝构造函数拷贝构造函数:若一个构造函数的第一个参数是自身类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数class Foo{public: Foo();//默认构造函数 Foo(const Foo&)//拷贝构造,注意默认构造与拷贝构造之间的区别};一般来说,如果类中没有定义拷贝构造函数,编译器会默认定义一个合成拷贝构造函数,...原创 2019-10-24 20:56:20 · 182 阅读 · 1 评论