![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 54
weixin_42380877
这个作者很懒,什么都没留下…
展开
-
递归函数从n个人中选k个人与动态规划(Dynamic Programming)
发现一道递归函数的题目,从n个人里面选择k个人组成group,其中的分析方法很像算法课上学习到的动态规划法:当从n个人里面选择k个人的时候,我们可以假设第n个人被选中了,那么从n个人里面选择k个人的group总共有:在剩下的n-1个人里面选择k-1个人; 我们还可以假设第n个人没有被选中,那么则需要:在n-1个人里面选择k个人。 所以可以写成公式:C(n, k)= C(n-1, k-1) ...原创 2018-06-14 16:49:20 · 996 阅读 · 2 评论 -
指针作为函数参数/指针类型的函数/指向函数的指针(function pointer)
指针作为函数参数:为什么需要指针做参数: 1. 需要数据双向传递时(引用也可以达到此效果) 2. 需要传递一组数据,只传首地址运行效率比较高example:#include <iostream>using namespace std;const int N = 6;void print(const in...原创 2018-07-06 18:29:10 · 2556 阅读 · 2 评论 -
对象指针/当前 this 指针
指向对象的指针,怎么调用对象里面的函数:指针名 -> 函数名;#include <iostream>using namespace std;class Point{ public: Point (int x =0, int y = 0):x(x), y(y){}; int Get_x(){ return x; }; int Get_y(){ ...原创 2018-07-06 18:51:15 · 176 阅读 · 0 评论 -
vector/移动构造(C++11)/左值右值引用
vector :可是存放任何类型的数组vector 对象的定义:vector <元素类型> 数组对象名(数组长度例子: vector <int> ary(5) //建立大小为5的数组可以利用 vector对象名发 [下标表达式]对数组元素进行饮用获取数组长度:用size函数:vector对象名.size()移动构造:1. 使用深层复制构造函数: 返回时构造临时对象, 动态分...原创 2018-07-07 18:51:23 · 2893 阅读 · 0 评论 -
容器(container)
容器的通用功能:-- 用默认构造函数构造空容器-- 支持关系运算符: ==, !=, <, >, <=, >=-- begin(), end(): 获得容器首,尾迭代器-- clear(): 将容器清空-- empty(): 判断容器是否为空-- size(): 得到容器元素个数-- s1.swap(s2): 将s1 和s2 两容器内容交换相...原创 2018-07-28 18:40:57 · 457 阅读 · 0 评论 -
流类库及输入输出
C++中的所有输入输出流:最重要的三个输出流:ostream, ofstream, ostringstream预先定义的输出流对象:cout: 标准输出cerr: 标准错误输出,没有缓冲,发送给它的内容立即被输出clog: 类似于cerr,但是有缓冲,缓冲区满时被输出构造输出流对象:-- ofstream类支持磁盘文件输出-- 如果在构造函数中指定一个文件名...原创 2018-07-29 16:34:37 · 422 阅读 · 0 评论 -
异常处理(throw,try, catch)
异常处理的意思是说当次模块产生错误时,此模块并不处理,而是抛给此模块的调用者来处理异常处理的语法:-- 抛掷异常的程序段: throw 表达式-- 捕获并处理异常的程序段 try 复合语句 (保护段) catch(异常声明) 复合语句 (异常处理程序) catch(异常声...原创 2018-07-29 17:54:44 · 5733 阅读 · 1 评论 -
模版/template
简单来讲,模板的作用是为了令一个函数可以用于多种不同类的对象函数模板定义语法:语法形式:template <模板参数表> 函数定义模板参数表的内容:** 类型参数:class(或typename)标识符** 常量参数: 类型说明符 标识符** 模板参数: template <参数表> class 标识符举例...原创 2018-07-22 16:37:23 · 135 阅读 · 0 评论 -
STL (Standard Template Library)
STL的基本组件:** 容器(container)** 迭代器(iterator)** 函数对象(function object)** 算法(algorithm) 容器:** 容纳, 包含一组元素的对象** 基本容器类模板 * 顺序容器: array, vector, dequeue, forward_list, list * 关联容器(有序):...原创 2018-07-22 19:32:23 · 105 阅读 · 0 评论 -
继承与派生
继承与派生概述:继承与派生是同一个过程从不同的角度看: 保持已有类的特性而构成新类的过程称为继承 在已有类的基础上新增自己的特性而产生新类的过程称为派生被继承的已有类成为基类(父类)base class派生出的新类称为派生类(子类)derived class直接参与派生出某类的基类成为直接基类基类的基类甚至更高层的基类称为间接基类继承的目的:实现设计与代码的重用,充分利用原有的类派生的...原创 2018-07-13 00:05:49 · 24626 阅读 · 3 评论 -
运算符重载
双目运算符重载为成员函数:重载为类成员的运算符函数定义形式:函数类型 operator 运算符(形参){ ........}参数个数 = 原操作数个数 - 1 (后置++, --除外)双目运算符重载规则:如果要重载B为类成员函数,使之能够实现表达式 oprd1 B oprd2, 其中oprd1 为A类对象,则B应被重载为A类的成员函数,形参类型应该是oprd2所属的类型经过重载后,表达式oprd1...原创 2018-07-18 18:07:08 · 135 阅读 · 0 评论 -
string(字符串)/getline
要在前面加上 #include <string>string类常用的构造函数:string();//默认构造函数,建立一个长度为0的字符串例子:string s1;string (const char *s);//用指针s所指向的字符串常量初始化string对象例:string s2 = "abc" ;string(const string & rhs); //复制构造函数例:...原创 2018-07-08 16:27:11 · 332 阅读 · 0 评论 -
汉诺塔递归引发的char的思考
做了一道汉诺塔的递归题,递归本身并不是很难,现总结如下:把n个环从A动到C,以B作为中间过度的杆子,要怎样移动。 我们只需考虑, 我们能否将n-1个环从A动到C若可以,我们便可以将n-1个环先从A通过C作为过渡动到B,然后将最后一个环放在C上,然后将在B上面的所有环通过A作为过渡动到C上就可以了。用C++写好的程序如下:#include <iostream>#include <...原创 2018-06-14 17:34:58 · 116 阅读 · 0 评论 -
计算机系统组成/程序开发过程/计算机的信息与存储单位/数据编码表示
计算机系统:输入设备 外存储器 内存储器 CPU 输出设备计算机可以识别的是机器语言:机器语言指令是由0和1编码的计算机指令系统:计算机硬件能够识别的语言的集合,是软件和硬件的主要界面计算机软件:应用软件 系统软件(管理计算机资源,任务) 中间件(提供系统软件和应用软件之间链接的软件)软件 = 程序 + 文档计算机程序:指令的序列...原创 2018-06-07 22:06:09 · 153 阅读 · 0 评论 -
函数的重载
函数的重载是用来当一个函数需要给出不同参数类型的时候,可是我们希望函数的名字是一致的,这个时候就需要用函数的重载语法: 形参类型不同: int add(int x, int y); int add(float x, int float y); 形参个数不同: int add(int x, int y); in...原创 2018-06-14 22:24:13 · 108 阅读 · 0 评论 -
C++基本数据类型,常量,变量
整数类型:基本的整数类型:int 按符号分:符号的 (signed) 无符号的(unsigned)按照数据范围分:短整型 (short) 长整型 (long) 长长整型 (long long)字符类型(char)character的缩写浮点数类型:单精度(float) ...原创 2018-06-08 16:51:20 · 176 阅读 · 0 评论 -
逗号运算,关系运算,逻辑运算,和条件运算
逗号运算:a = 3*5, a*4 最后结果为60关系运算:< <= > >= (优先级较高) == != (优先级较低) 结果类型为bool 只能为真或假逻辑运算:非 (!) 与(&&)或(||)条件表达式: 表达式1 ? 表达式2 : 表达式3意义:若表达式1为真 则表达式2...原创 2018-06-08 17:24:34 · 1148 阅读 · 0 评论 -
自定义类型
类型别名: 为已有类型另外命名1. typedef 已有类型名 新类型名表 例: typedef double Area, Volume; typedef int Natural; Nature i1, i2; Area a; Volume v;2. using 新类型名 = 已有类型名例: using Area = double...原创 2018-06-09 21:52:42 · 152 阅读 · 0 评论 -
关于写二进制转十进制程序的一些
看B站郑莉老师的视频,到第三章的时候有一个例题:将一个8位的二进制数字转换成十进制数字在写的过程中遇到了一些问题,解决之后现总结如下:<textarea readonly=”readonly” name=”code” class=”c++”> #include <iostream>#include <string>using namespace std;...原创 2018-06-10 22:06:09 · 2137 阅读 · 0 评论 -
关于两道练习题的一些回顾(计算圆周率以及回文)
第一道写一个function来求圆周率的值,写的时候卡在了,double(1/5),改了很长时间也没有改对,后来发现,是因为int/int 还为int 如果想让(1/5)为double型,需要令分母或者分子为int型,这是从这道练习题中学到的#include <iostream>#include <string>using namespace std;double ...原创 2018-06-11 00:13:05 · 1143 阅读 · 0 评论 -
迭代器(iterator)
迭代器是算法和容器的桥梁** 迭代器用作访问容器中的元素** 算法不直接操作容器中的数据,而是通过迭代器间接操作算法和容器独立** 增加新的算法,无需影响容器的视线** 增加新的容器,原有的算法也能适用输入流迭代器和输出流迭代器:*输入流迭代器 istream_iterator<T> * 以输入流(如cin)为参数构造 * 可用...原创 2018-07-22 22:40:06 · 532 阅读 · 0 评论