C++
牛右刀薛面
Know-what and Know-how
展开
-
c++ 文本操作多种方法
文章目录1、二进制文件流2、直接文本方式1、二进制文件流#include <iostream>#include <fstream>#include <vector>#define p "/home/barry/CLionProjects/temp/t.txt"#define path "/home/barry/CLionProjects/temp/file1.txt"#define path2 "/home/barry/CLionProjects/temp/原创 2022-05-05 16:14:38 · 1000 阅读 · 0 评论 -
c++删除txt文件中指定行
1、问题描述比如需要删除t.txt文件中第一列等于6的行。2、代码思路:首先将所有行放到string数组中,然后将第一列信息放到vector中。清空原文件,将除了指定编号的行都放到原文件中。vector<string> split(string s,char c){ vector<string> re; for(int i = 0; i < s.size(); i++){ string t=""; while(i<原创 2022-05-03 14:47:41 · 5951 阅读 · 1 评论 -
clion连接mysql
文章目录1、引入libmysql文件2、引入库3、使用mysql头文件主要流程和我之前写的文章类似,本文主要记录核心过程,将mysql配置到clion中IDEA中使用sqliteClion连接sqlite1、引入libmysql文件将一下两个文件复制到cmake-build-debug目录下2、引入库将以下两个文件路径加载到CMakeLists.txt中。路径前面的空格一定要加 \ !!!!这个反斜杠很重要CMakeLists.txt文件如下所示,主义对比你原来CMakeLists文原创 2022-05-02 17:27:28 · 1688 阅读 · 4 评论 -
clion连接sqlite
文章目录1、下载sqlite头文件2、加载头文件3、修改CMakeLists.txt4、使用图像界面5、代码连接数据库1、下载sqlite头文件sqlite官网下载适合c语言的sqlite头文件下载后的文件如下所示,主要使用中间两个文件2、加载头文件将中间两个头文件复制到项目根目录中3、修改CMakeLists.txt//Q_S 是我的项目名称,把Q_S改成你的项目名称cmake_minimum_required(VERSION 3.21)project(Q_S)set(CM原创 2022-05-02 17:12:00 · 1416 阅读 · 5 评论 -
C++虚基类
1、为什么要引入虚基类如果一个派生类是从多个基类派生出来的,而这些基类又有一个共同的基类,则在这个派生类中访问这个共同的基类中的成员时,可能会产生二义性。比如有以下结构class B{ protected: int a; public: B( ){ ...} };class B1: public B{ public: base1( ){...} };class B2: public B{ public: B2( ){...} }; class D:public B1,pu原创 2022-04-21 09:49:00 · 13789 阅读 · 12 评论 -
数据结构-堆排序
文章目录1、向下调整2、向上调整3、建立堆4、堆排序5、删除堆首6、增加元素7、完成代码堆是由一维数组存储的完全二叉树,下标从1开始,因此下标最大的非叶子节点为n/2(可以动手画画想想)。本篇文章以建立大根堆为例。1、向下调整使用向下调整方式建立堆时,直接选择非叶子节点。void down(int low, int high){ int i = low; int j = i*2; while(j<= high){ //如果含有右孩子,并且右孩子大于左孩子则将j置为右孩子原创 2022-04-16 19:44:34 · 694 阅读 · 0 评论 -
c++计算字符串中浮点数
又是字符串中的内容是一个浮点数,我们需要将其计算出来。1、atof计算浮点数#include<iostream>#include<cmath>#include<cstdlib>using namespace std; int main(){ string t = "56.41"; cout << atof(t.data());}2、atoi返回int类型3、atol返回longlong类型...原创 2022-04-07 10:56:18 · 444 阅读 · 0 评论 -
c++ math头文件一些函数使用记录
文章目录1、round1、round四舍五入函数roune(doube x);原创 2022-04-07 10:53:08 · 780 阅读 · 0 评论 -
c++ math头文件一些函数使用记录
文章目录1、round1、round四舍五入函数roune(doube x);原创 2022-04-07 10:35:14 · 288 阅读 · 0 评论 -
计算n位二进制的所有情况
平常做题的时候偶尔用到二进制的所有情况的题目,软件测试,离散数学里面都有,那么怎么让程序打印出来给定n位的二进制所有情况呢,使用dfs算法就好了。#include<bits/stdc++.h>using namespace std;const int MAXN = 1e2;int n=3;bool vis[MAXN];void dfs(int index){ if(index == n+1){ for(int i = 1; i <= n; i++){原创 2022-04-07 09:37:54 · 712 阅读 · 0 评论 -
快速排序_two-powinters思想
快速排序的思想是:在数组随机挑一个位置的数(注意这里一定是随机,不能直接选最左侧的数),然后使用两个指针调整数组,保证被挑中的数的左侧都是小于等于其本身,右侧都是大于其本身。重复以上操作即可。#include<bits/stdc++.h>using namespace std; int arr[10] = {1,678,23,78,56,9,67,34,627,787};void quicksort(int left, int right){ if(left>=right)r原创 2022-04-06 16:23:07 · 117 阅读 · 0 评论 -
c++cout不使用科学计数法打印数字
使用cout打印的时候,有时会出现下面的样子,但是我们不想使用科学计数法。#include <bits/stdc++.h>using namespace std; int main(){ cout << pow(9,9) << endl; cout << fixed << setprecision(0)<<pow(9,9); return 0;}...原创 2022-04-02 19:59:48 · 3843 阅读 · 2 评论 -
C++中acculumate函数使用
使用acculumate函数对vector容器进行求和。#include<set>#include<iostream>#include<algorithm>#include<vector>#include<numeric>using namespace std;int main(){ vector<int> vec; vec.push_back(1); vec.push_back(2); vec.原创 2022-03-30 19:49:24 · 949 阅读 · 0 评论 -
C++_Map
map十个非常好用的工具,具有键值对之间映射的关系,能够帮助我们解决很多问题。1、findmap<char,int> m;map<char,int>::iterator it = m.find('a');返回所找键所对应的指针。2、countmap<char,int> m;cout << m.count('a')返回键在map中出现的次数。3、erasemap<char,int> m;map<char,int&g原创 2022-03-29 16:11:25 · 1077 阅读 · 0 评论 -
7-11 哈利·波特的考试 (25 point(s))
哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物。老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事。于是他来问原创 2022-03-27 19:49:10 · 230 阅读 · 0 评论 -
C++中algorithm头文件中一些函数使用记录
文章目录1、sort()1.1 基本数据类型排序1.2 结构体向量排序2、reverse3、find1、sort()vetor<int> vec;sort(vec.begin(),vec.end(),way);1.1 基本数据类型排序默认情况下way是less(),从小到大排序,若改成greater()则是从大到小排序。1.2 结构体向量排序此时sort函数的way需要自定义。struct Book{ int price; string name;}bool cmy(B原创 2022-03-27 17:18:20 · 740 阅读 · 0 评论 -
SET-Priority_Queue
Priority_Queue称为优先队列,是一种给按照优先级顺序存储的队列,拥有queue的结构,同时拥有自动排序的能力。1、常用函数1.1 pop()出队1.2 top()取队首元素1.3 push()入队1.4 empty()如果队空,则返回true1.5 size()返回队列大小2、 优先级设置2.1 基本数据类型基本数据类型指的是 int, double ,char。默认情况下数字越大,优先级越高。priority_queue<double> q;设置原创 2022-03-27 15:55:49 · 534 阅读 · 0 评论 -
7-8 阅览室 (20 point(s))
天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。输入格式:输入在第一行给原创 2022-03-27 15:31:24 · 145 阅读 · 0 评论 -
7-1 购买火车票 (15 point(s))
我们省略了很多现实中购买火车票的细节,对于一趟列车,根据输入的购票订单信息,查询余票并购票。座位是复用的,即订某段行程,只在该段行程内占据一个座位,在行程外不占座位。举个🌰 :某列车有青岛、济南、天津、北京四站(青岛发往北京),有10个座位,则:(1)订购青岛-天津车票1张,应先显示有余票10张,并执行购票操作;(2)再订天津-北京车票1张,显示余票10张,并执行购票操作;(3)再订济南-天津车票9张,显示余票9张,并执行购票操作;(4)再订青岛-天津车票1张,显示余票0张,并提示不能购票。为原创 2022-03-27 13:59:46 · 383 阅读 · 0 评论 -
L2-008 最长对称子串 (25 point(s))
对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。输入格式:输入在一行中给出长度不超过1000的非空字符串。输出格式:在一行中输出最长对称子串的长度。输入样例:Is PAT&TAP symmetric?输出样例:11**思路:**使用动态规划算法,当然也有目前最优秀的manacher算法,不过最近在学动态规划,那么这道题就用动态规划算做。dp[i][原创 2022-03-26 15:26:00 · 229 阅读 · 0 评论 -
L2-007 家庭房产 (25 point(s))
给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。输入格式:输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产:编号 父 母 k 孩子1 … 孩子k 房产套数 总面积其中编号是每个人独有的一个4位数的编号;父和母分别是该编号对应的这个人的父母的编号(如果已经过世,则显示-1);k(0≤k≤5)是该人的子女的个数;孩子i是其子女的编号。输出格式:首先在第一行输出家庭个数(所有有亲属关系的人都属于同一个家庭)。随后按下列格式输原创 2022-03-26 11:14:06 · 223 阅读 · 0 评论 -
Dev-c++下‘stoi‘ was not declared in this scope解决办法
打开“工具”->“编译选项”选择“代码生成/优化”,设置成以下形式即可原创 2022-03-25 21:54:11 · 2201 阅读 · 0 评论 -
L2-006 树的遍历 (25 point(s))
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:4 1 6 3 5 7 2#include<iostream>#inclu原创 2022-03-25 19:54:19 · 93 阅读 · 0 评论 -
STL容器-queue队列
记录有关queue队列的一些使用1、push()入队2、front()头3、back()尾4、empty()是空就返回真5、pop头部出队原创 2022-03-25 19:47:25 · 284 阅读 · 0 评论 -
STL-vector容器
有关vector容器使用方法的一些记录文章目录1、size()2、back()3、front()4、begin()5、end()1、size()返回大小2、back()最后一个元素3、front()首元素4、begin()起始位置索引5、end()末尾位置索引原创 2022-03-25 19:09:23 · 431 阅读 · 0 评论 -
L2-005 集合相似度 (25 point(s))
给定两个整数集合,它们的相似度定义为:Nc/Nt×100%。其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。输入格式:输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤104),是集合中元素的个数;然后跟M个[0,109]区间内的整数。之后一行给出一个正整数K(≤2000),随后K行,每行对应一对需要计算相似度的集合的编号(集合从1到N编号)。数字间以空格分隔。输原创 2022-03-25 19:00:17 · 133 阅读 · 0 评论 -
STL容器-set
文章目录1、insert2、遍历set容器能够自动排序,去重,查找元素时也很方便,这里记录一下遇到使用set的情况时不会的操作。1、insert将元素加入至set容器中2、遍历要根据被遍历的set容器的类型进行定义迭代器。比如时int类型的set容器。#include<set>#include<iostream>#include<algorithm>using namespace std;int main(){ set<int> s;原创 2022-03-25 10:04:47 · 229 阅读 · 0 评论 -
C++_limits头文件
#include<climits>导入这个头文件以后可以直接使用下列关键输出即可。 nameexpressesvalue*CHAR_BITNumber of bits in a char object (byte)8 or greater*SCHAR_MINMinimum value for an object of type signed char -127 (< -27+1 ) or less*SCHAR_MAXMaximum value for an object of原创 2022-03-25 09:37:58 · 1488 阅读 · 0 评论 -
L2-004 搜索树判断 (25 point(s))
对于二叉搜索树,我们规定任一结点的左子树仅包含严格小于该结点的键值,而其右子树包含大于或等于该结点的键值。如果我们交换每个节点的左子树和右子树,得到的树叫做镜像二叉搜索树。现在我们给出一个整数键值序列,请编写程序判断该序列是否为某棵二叉搜索树或某镜像二叉搜索树的前序遍历序列,如果是,则输出对应二叉树的后序遍历序列。输入格式:输入的第一行包含一个正整数N(≤1000),第二行包含N个整数,为给出的整数键值序列,数字间以空格分隔。输出格式:输出的第一行首先给出判断结果,如果输入的序列是某棵二叉搜索树或原创 2022-03-25 09:13:05 · 231 阅读 · 0 评论 -
L2-003 月饼 (25 point(s))
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72 + 45/2 = 94.5(亿元)。输入格式原创 2022-03-24 10:05:46 · 129 阅读 · 0 评论 -
c++_iomanip头文件一些函数记录
文章目录1、前言2、案例一3、案例二1、前言在c语言中使用printf函数中%.5f可以控制浮点数结果保留五位小数,那么在c++中的cout语句该如何控制浮点数的有效位数呢。使用iomanip头文件提供的setprecision函数2、案例一设置有效数字位数#include<iomanip>using namespace std; int main(){ cout <<setprecision(2) <<1.0*75 /18 << end原创 2022-03-22 21:41:42 · 1088 阅读 · 0 评论 -
L2-002 链表去重 (25 point(s))
给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤10^5 ,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 -1 来表示。随后 N 行,每行按以下格式描述一个结点原创 2022-03-22 21:08:09 · 126 阅读 · 0 评论 -
L2-001 城市间紧急救援 (25 point(s))
作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式:输入第一行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0 ~ (N−1);M是快速道路的条数;S是出发地的城市编号;D是目的地的城市编号。第二行给出N个正整数,原创 2022-03-22 17:45:45 · 251 阅读 · 0 评论 -
L1-8 估值一亿的AI核心代码 (20 分)
很有意思的一道题目,写了非常多的代码,最后没解决,在网上看了使用正则表达式是最优解。以上图片来自新浪微博。本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:无论用户说什么,首先把对方说的话在一行中原样打印出来;消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;把原文中所有大写英文字母变成小写,除了 I;把原文中所有独立的 can you、could you 对应地换成 I can、I could—— 这里“独立”是指被原创 2022-03-15 16:55:40 · 187 阅读 · 0 评论 -
c++_String一些使用记录
需要删除字符串中第i个字符的时候的写法,注意不是i而是str.begin()+i;string str = "sdfsdf";str.earse(2);//output:sdstr.earse(str.begin()+2);//output:sdsdf原创 2022-03-15 16:23:15 · 1061 阅读 · 0 评论 -
c++下字符串分割函数split实现
简单来说就是使用vector容器,以字符串为分界线,分割后的字符串以string保存在vector中。vector<string> split(string st, char sign){ vector<string> str; for(int i = 0; i < st.length(); i++){ string temp=""; while(st[i]!=sign && i <st.leng原创 2022-03-15 12:58:00 · 1608 阅读 · 0 评论 -
L2-2 口罩发放 (25 分)
L2-2 口罩发放 (25 分)为了抗击来势汹汹的 COVID19 新型冠状病毒,全国各地均启动了各项措施控制疫情发展,其中一个重要的环节是口罩的发放。某市出于给市民发放口罩的需要,推出了一款小程序让市民填写信息,方便工作的开展。小程序收集了各种信息,包括市民的姓名、身份证、身体情况、提交时间等,但因为数据量太大,需要根据一定规则进行筛选和处理,请你编写程序,按照给定规则输出口罩的寄送名单。输入格式:输出格式:对于每一天的申请记录,每行输出一位得到口罩的人的姓名及身份证号,用一个空格隔开。顺序按照原创 2022-03-13 16:35:10 · 464 阅读 · 0 评论 -
PAT题目中用到的一些C++便捷函数记录
文章目录1、数组求和1、数组求和#include<numeric>//为代码sum = accumulate(arr.begin(), arr.end(), Init_num)'参数一:数组起点参数二:数组终点参数三:以init_num作为求和起点原创 2022-03-11 14:55:50 · 773 阅读 · 0 评论 -
C++中对字符串操作
1、count_if检测字符串中符合条件的字符的个数。eg:检测字符串str中是否有非数字部分。bool IsNum(char ch){ return !isdigit(ch);}int count = count_if(str.begin(),str.end(), IsNum);2、计算字符串str中的和,并且对结果进行范围检测。stoi(str)<=1000&&stoi(str)>=1...原创 2022-03-10 19:45:05 · 616 阅读 · 0 评论 -
printf中设置位数不够,补零
int a= 5;printf("%02d",a)//输出“05”原创 2022-03-10 08:30:29 · 913 阅读 · 0 评论