C++基础学习
文章平均质量分 61
一袍清酒付825
转Tswatery.github.io
展开
-
多态 虚函数
文章目录多态实操代码深度剖析指针是4个字节类中的非静态成员函数存储区域不同,空类是1个字节。继承下来的东西所有东西都是一样的除了private域。多态我觉得多态的基本是在于C++中支持基类的引用可以指向派生类。实操代码#include <bits/stdc++.h>using namespace std;//多态分为两类(多种状态)/*静态多态 函数重载和运算符重载属于静态多态 复用函数名动态多态 派生类以及虚函数实现运行时多态区别:静态多态的函数地址早绑定:编译原创 2022-01-06 23:05:12 · 668 阅读 · 0 评论 -
静态成员变量以及静态成员函数
文章目录何为静态成员静态成员变量实操代码静态成员函数代码实操何为静态成员静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员。静态成员变量1.所有对象共享同一份数据;2.在编译阶段分配内存(在点开exe文件之前);3.类内声明,类外初始化。实操代码#include <bits/stdc++.h>using namespace std;class Person { public: //所有对象都共享同一份数据!!!! //编译阶段就分配了内存原创 2022-01-05 21:33:18 · 753 阅读 · 0 评论 -
C++的文件读写以及python的文件读写
文章目录C++读文件写文件Python读文件写文件后言C++读文件其实一般文件的读取只涉及从文件中把东西读出来,所以提供以下模板:#include <bits/stdc++.h>using namespace std;int main() { ifstream bookfile("book.txt"); //打开在目录下的book.txt 注意是ifstream流 string s; while (bookfile) { getline(bookfile, s);//一原创 2021-12-24 19:43:14 · 897 阅读 · 0 评论 -
hnu 肿瘤面积
文章目录题目思路AC代码后记题目思路由题可知道的是,肿瘤边界一定是0,而且一定是一个矩形。那么就可以通过正序与逆序找到左上角0的坐标以及右下角0的坐标。然后再遍历或者直接算内层矩形的面积即可。AC代码#include <bits/stdc++.h>using namespace std;int main() { int n; cin >> n; int arr[n + 1][n + 1]; for (int i = 1; i <= n; ++i) {原创 2021-10-29 15:37:39 · 114 阅读 · 0 评论 -
多阶段决策求最优解----动态规划(Dynamic Programming)
文章目录引例1:最短路径求解引例2:数塔问题搜索的代码实现动态规划的思路递推代码 空间换时间递归代码引例1:最短路径求解求A–E的最短路程距离对于一般的问题我们可以采取深度优先搜索来找出每一个路径的长度再整体比较;或者使用贪心,从局部最优解推导出整体最优解。但是对于深搜,如果这个图很大,那么效率将是非常低的;对于贪心,如果出现有两条路径的距离是一样的,那么这一步的贪心就无法进行下去;而且局部最优到最后并不一定是全局最优,比如一条路径是5 1 1,另一条路径是3 5 6(图只在第一个口除有分岔口原创 2021-08-21 22:19:59 · 3405 阅读 · 0 评论 -
C++STL中的priority——queue
文章目录引用基本操作改变优先级引用引用需要加上头文件queue而不是priority_queue!#include <iostream>#include <queue>using namespace std;int main(){priority_queue<int> q;}基本操作priority_queue是优先级序列,其底层是通过堆(heap)来实现的,即我们关注的点在于堆顶的元素。使用priority_queue没有返回尾部元素的函数(说堆尾原创 2021-08-19 17:37:21 · 241 阅读 · 0 评论 -
递归求解全排列问题以及八皇后问题
文章目录全排列问题简介思路及代码八皇后问题简介代码全排列问题简介对于全排列问题,我们要做的事是讲1~n个数进行排列组合,并按照字典序由小到大的顺序输出。这个问题的复杂度是O(n!),高中的排列组合嘛!思路及代码#include <cstdio>using namespace std;int n, P[1000];bool hashTable[1000] = {false};void generateP(int index) { if (index == n + 1) {原创 2021-08-18 11:20:42 · 160 阅读 · 0 评论 -
力扣 27.移除元素 关于数组的存储是连续的问题
文章目录题目思路AC代码题目移除元素思路其实一开始的思路,是想数组中出现的元素,删掉不就好了嘛。但是,要知道,C++中的数组中的元素是连续的,不能删除只能覆盖(不能跟python的列表混杂)。其实对于array类型的数组我们并没有删除操作,但是题中所给的vector容器是由erase操作的,但是通过代码实现发现vector容器并不能实现多次erase连续删除。#include <iostream>#include <vector>using namespace std原创 2021-08-15 22:09:05 · 261 阅读 · 0 评论 -
深度优先搜索DFS
文章目录什么是DFS案例图的遍历例题 扫地机器人思路什么是DFS深度优先搜索属于算法的一种,其过程是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。简单的来说就是:一路走到头,不撞南墙不回头。案例图的遍历遍历上图,图中部分节点之间有路径连接。遍历规则为:深度优先,右手路径优先,不能重复遍历。那么遍历的结果是什么?ABCDEFGHI例题 扫地机器人思路典型的DFS的题...原创 2021-08-10 17:16:40 · 298 阅读 · 0 评论 -
二分查找提升
文章目录前言一个例题关于mid的写法比较指标while是小于等于还是小于例题 查找左边界前言二分查找是效率较高的查找方法,可以适用于任何类型的查找。效率为O(logn)当n非常大的时候,效率是比O(n)高很多的。在二分查找整数的时候,一般左边=右边的时候就是找到了。如果左边>右边,那么就是找不到,一般是返回-1。二分查找的难点在于,左右边界的取值以及判断条件的写法。一个例题AC代码#include <bits/stdc++>using namespace std;int ar原创 2021-08-09 11:41:48 · 115 阅读 · 0 评论 -
hnu暑期实训之487-3279 字符串处理
文章目录题目AC代码思路收获题目AC代码#include <iostream>#include <vector>#include <set>#include <algorithm>using namespace std;int main() { int n; cin >> n; vector<string> v1;//建立一个存储string的容器 getchar();//去掉换行符 for (int i原创 2021-08-04 17:25:09 · 116 阅读 · 0 评论 -
迭代器 iterator
文章目录迭代器简介迭代器的定义迭代器的分类迭代器的使用迭代器简介是用来指向、遍历。修改容器元素的变量,类似于指针。可以迭代STL容器内全部或部分元素的对象;(有些容器不支持下标)指出容器中的一个特定位置int main() { char a[] = "hello world"; char *p; //p是指向字符数组的指针 相当于迭代器 for (p = a; *p != '\0'; *p++) { //++的运算级更高 cout << *p; }}迭代器的定义对原创 2021-08-01 09:45:21 · 165 阅读 · 0 评论 -
C++之STL学习
目录STL简介vector-动态数组定义vectorvector的插入、删除、获取头尾元素vector的sort reverse resize empty函数的用法定义二维vector其他函数pop_backclearmax_size听他们说C++把STL学了做题速度会变快,我就来学一下。STL简介STL(Standard Template Libraay)是C++中的标准模板库,是"容器"的集合。在STL中定义的容器都可以存放任意类型的变量。vector-动态数组向量(vector):是一个顺原创 2021-08-01 08:53:11 · 70 阅读 · 0 评论 -
一个由C++程序而引出的问题
今天在做大数除法的时候,发现了一个问题。题目是hnu小学期的A除以B的那个实训题,很简单。代码如下#include <iostream>#include <string.h>using namespace std;int main() { string s1; int B, num1[2000] = {0}, num2[2000] = {0}, i = 0; cin >> s1 >> B; int len = s1.size(); //原创 2021-07-31 09:53:27 · 65 阅读 · 0 评论 -
高精度运算
目录前言前言在C++中类型定义的话,对于数据是有较严格要求的。int类型 在内存中的大小为4byte 范围是-231~231-1long long 类型 在内存中大小为 8byte 范围是简单解释一下啊:计算机在存储时使用的最小单位是"位",一位存储的是0或是1,一位就是bit。还有一个概念叫“字节”(byte) 1byte=8bit。所以int可以存到32bit,但是有一位要留给正负号,所以是31,然后由于还有一个特殊的数0,而0~231-1刚好是231个数。...原创 2021-07-30 11:20:07 · 114 阅读 · 0 评论 -
递归实例以及应用包含形参辨析
目录形式参数与实际参数编程求解 1+2+3+...+n二进制转换用递归求两个数的最大公约数形式参数与实际参数以求公约数为例,估计有很多同学在看到这个程序时对于return f(b,a%b)不是很好理解。这里是形式参数与实际参数的做鬼。#include <iostream>using namespace std;int f(int a, int b) { if (b != 0) { return f(b, a % b);// } else { return a;//最终的终点原创 2021-07-28 08:51:11 · 309 阅读 · 0 评论 -
string转换函数以及hnu暑期实训部分和A+B的例题
目录string和数值转换函数stoi(s) stoll(s) stof(s)to_string(int n)、to_string(double a)需要C++11的语法支持,具体操作时devcpp的工具栏里选择编译选项勾选编译时使用以下命令,输入-std=c++11即可。string和数值转换字符串转为数字函数stoi(s) stoll(s) stof(s)分别是字符串转换为对应的整数,长整型,浮点数。s是字符串的意思 to是转换的意思 就很好记了。int main(){string s1原创 2021-07-28 08:50:37 · 87 阅读 · 0 评论 -
输入函数的区别C++
目录简介cin函数、scanf函数gets函数getline函数简介会详尽描述几大输入函数,C++的输入为啥感觉要比python复杂得多呢。。cin函数、scanf函数cin函数要用头文件iostream来导入,cin函数比较适合用于给出一系列用空格分开的数据,可以分别将其存入对应的变量,这一点是优于python的,因为python的input函数只会将输入的数全部当作字符串,然后我们需要对字符串进行处理,才能得到我们想要的数据。scanf函数跟cin差不多,但是效率要高一点,写起来比较复杂。#原创 2021-07-26 20:17:14 · 152 阅读 · 0 评论 -
string的一些常见函数
目录前言string的查找与截取find查找函数substr截取(切片)函数前言之前说过的strlen strcpy strcat strcmp都是对于两个字符串之间来搞事情的,今天我们说的一些函数是对字符串本身来操作的。就是python中的对字符串的切片与检索。string的查找与截取find查找函数这个在python中也有,具体来说是找到就返回下标,没找到就返回-1.在C++中也是通过s来调用find的 。如果有多个需要查找的值,往往返回的是第一个被找到的下标,若想找后面的,可以在find后原创 2021-07-26 08:27:17 · 2040 阅读 · 1 评论 -
C++递归以及内存值的传递
目录递归递归求解问题的过程递归的重要思想值的传递与地址传递递归递归其实是函数的自我调用。如果一个函数可以求A(n),那么就一定可以求解A(n-1),就形成了递归调用。递归求解问题的过程第一步:找出规律(其实一般来说规律是很容易找出来的,但是很难用代码来实现)第二步:写函数,此函数的返回值是调用自己本身。第三步:寻找起始项,使递归停止。这一步很重要!!!不然会使函数称为死循环。递归的重要思想既然一个函数func()可以解决一个问题的第n步那么肯定可以解决第n-1步,同理也能解决第n+1步。原创 2021-07-24 21:23:16 · 514 阅读 · 0 评论 -
[警告] multi-字符 character constant [-Wmultichar] ----字符+符号输出错误
在用dev c++做题的时候遇到一个问题,就是我想直接输出-1的时候,我想到了python中的字符串输出。print('-1') #-1在python中这样是合法的语法。在C++中我就想用cout同样输出。int main(){cout<<'-1'<<endl;}//11569打印出来的并不是-1,而且是11569.这是因为cout对单引号引用的多个字符是处理不了的,用双引号引用即可。C++中的字符与字符串是不一样的。字符是用单引号引用,而字符串是双引号。同样如果原创 2021-07-24 21:10:25 · 3923 阅读 · 2 评论 -
C++中如何小数点后精确到两位输出
在python中我们可以用a=0.213124print("a={:.2f}".format(a))但在C++中就比较复杂了我们有两种方式来输出一种是头文件为iostream的cout另一种是cstdio中的printf#include <iostream>#include <csdtio>#include <iomanip>using namespace std;int main(){float a;a=0.12412;printf("%.2f原创 2021-07-20 09:16:46 · 22274 阅读 · 3 评论