C向C++的一个过渡

思维导图

 输入输出,以及基础头文件

在c语言中我们常用scanf("%d",&n);和printf("%d\n",n);来输出一些变量和常量,在C++中我们可以用cin;和cout;来表示输入输出。

在C语言中输入输出有头文件,在C++也有头文件,只不过C++的头文件有一点奇怪,他首先是要包括一个输入输出流(即iostream,i表示cin中的i.o就是表示输出也就是cout,这个stream在英文中表示的是是水流的意思,在计算机的眼中,信息是像水一样流进计算机的,处理玩的信息是像水一样留出计算机的),所以这个头文件就叫左iostream,然后这个还要用一个using namespace std。这个是内存申请一个空间,并且将stdio.h中的函数放进去(虽然stdio.h的函数很少),哪里可以看到这个stdio.h呢,就是在namespace的后面std,这个就是stdio.h。

这是对数字和特殊字符的输出:

#include<iostream>
using namespace std;
int main()
{int n=1;//下面这三种都是等价的printf("%d %d\n",n,n+1);cout<<n<<" "<<n+1<<endl;cout<<n<<" "<< n+1<<"\n";
}

接下来就是有关字符串

数值

最大值:0x3f3f3f3f(4个f,3个0)或者0x7fffffff(这里一共7个f)这两玩意都是表示最大值的意思,数量级是 10^9 .

#define INF 0x3f3f3f3f或者const int INF = 0x3f3f3f3f来使自己定义的变量inf(所以以后看到这个不要慌,这个就是表示最大值的意思)。

函数

s1.substr()函数

使用的方法就是:设置一个字符串s1,然后将这个字符串用‘.’连接起来,括号里面有两个变量,第一个变量需要开始的位置(往往是指下标,所以就需要减一),第二个变量是你需要的长度。用一个新的字符串来存储s1中你所需要的的这一段字符.
 

#include<bits/stdc++.h>
using namespace std;
int main()
{string s1;cin>>s1;string s2;s2=s1.substr(1,4);//从下标为0的地方开始,直到长度为4cout<<s2<<endl;return 0;
}

 

s1.find(ch)函数

这个是在字符串s1里面找到一个和ch一样的字符,并且返回其位置(注意这个是返回下标,所以是长度减1)
 

#include<bits/stdc++.h>
using namespace std;
int main()
{string s1,s2;char ch;cin>>s1;cin>>s2;cin>>ch;int len1,len2;len1=s1.find(s2);len2=s1.find(ch);cout << len1 << endl;cout << len2 << endl;return 0;
}

sort函数

sort函数中含有三个变量,第一个和第二个是需要排序的范围(就是数组名加上数字),然后第三个就是决定升序或者降序的,如果不进行填写就是代表着升序。头文件在include<algorithm>,这个英文单词也是算法的意思

#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{int a[10];for(int i=1;i<=5;i++)cin>>a[i];sort(a+1,a+5);for(int i=1;i<=5;i++)cout<<a[i]<<"  ";return 0;
}

降序就在最后面加上一个greater<int>() 
升序就是在最后加一个less<int>() (或者可以什么都不写)

sort(a, a + n, greater<int>());//降序排列
sort(a, a + n, less<int>());//升序排列

接下来就是有关如何用sort函数来编写对结构体的排序:
主要就是对结构体其中的某个元素进行排序,然后将结构体全部元素都进行一个排序,所以这里最关键的就是对“标准”的定义(大白话就是对哪一个元素排序)。
首先我们就需要构造一个结构体

struct node
{int x,y,t;
} q[N];

然后书写规则(这里就需要书写一个bool类型的函数)

bool cmp(node x,node y)
{return x.t<y.t;//这个就是升序的标准
}

然后再将这个标准放在sort函数中的最后一位

sort(q,q+m,cmp);

 find函数

头文件是include<algorithm>
这个头文件包含了很多函数,所以建议大家先去看看这个里面所有函数,以便在书写变量和函数名重合。函数格式:InputIterator find (InputIterator first, InputIterator last, const T& val);

first 和 last 为输入迭代器(迭代其就相当于一个是勺子,可以向一碗汤中送汤,也可以从汤中捞汤),[first, last) 用于指定该函数的查找范围;val 为要查找的目标元素。
另外,该函数会返回一个输入迭代器,当 find() 函数查找成功时,其指向的是在 [first, last) 区域内查找到的第一个目标元素;如果查找失败,则该迭代器的指向和 last 相同。
具体的时使用代码如下(由于还没又进一部学习vector,所以后面的我也看不懂)
 

#include <iostream>     // std::cout
#include <algorithm>    // std::find
#include <vector>       // std::vector
using namespace std;
int main() {//find() 函数作用于普通数组char stl[] ="http://c.biancheng.net/stl/";//调用 find() 查找第一个字符 'c'char * p = find(stl, stl + strlen(stl), 'c');//判断是否查找成功if (p != stl + strlen(stl)) {cout << p << endl;}//find() 函数作用于容器std::vector<int> myvector{ 10,20,30,40,50 };std::vector<int>::iterator it;it = find(myvector.begin(), myvector.end(), 30);if (it != myvector.end())cout << "查找成功:" << *it;elsecout << "查找失败";return 0;
}

strstr函数

map函数、

这个函数首先是底一个变量就是它的·类型这个类型就是

队列等头文件

1.这里要用到一个优先队列(stl),其本质就是用一个数组模拟的一个完全二叉树。
2.功能:拿出优先级最大的元素,这个优先级可以自己定义。
3.这个包括在头文件#include<queue>之中。
4.定义方式:priority_queue<int> que   尖括号说明里面存放的数是整型(这样定义就是大顶堆 值越大优先级越高)
5.关于优先队列的几种操作:1.que.size()  得到这个队列的元素数量
                                              2.que.push(x)  插入
                                              3.que.pop()  删除优先级最高的元素
                                              4.que.top()访问优先级最高的元素(访问堆顶元素)
                                              5.que.empty()判断堆是否为空
插入删除的时间复杂空间度都是为对数级,访问堆顶元素的时间复杂度为常数级别。

接下俩是堆优先队列的一些基础操作

#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
int main()
{priority_queue<int> que;que.push(7);que.push(1);que.push(12);printf("nmber:");cout<<que.size()<<endl;while(!que.empty()){cout<<que.top()<<endl;que.pop();}cout<<endl;return 0;
}

输出数据如下(这样就可以使用堆排序)

  对于我们自定义

#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
struct node
{int x,y;bool operator< (const node &b) const{//运算符重新定义,注意这个运算符只能定义小于号return this->x>b.x;//从大到小}
};int main()
{priority_queue<node> que;que.push((node){5,2});que.push((node){2,4});while(!que.empty()){cout<<que.top().x<<endl;que.pop();}return 0;
}

 输出结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件应用,财务收支系统试用版操作教程,佳易王记录账单的软件系统

软件应用&#xff0c;财务收支系统试用版操作教程&#xff0c;佳易王记录账单的软件系统 一、前言 以下软件操作教程以 佳易王账单记账统计管理系统V17.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 如上图&#xff0c;统计报表包含 收支汇…

在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新

文章目录 一、需求背景二、token刷新的方案1、根据过期时间重新获取2、定时刷新token接口3、使用了RefreshToken 三、关于RefreshToken四、Refresh Token的优点五、Refresh Token的工作原理六、Refresh Token的使用流程七、Refresh Token的实现步骤1、登录成功后保存AccessToke…

前端CSS常考问题总结

目录 CSS盒模型 CSS选择器的优先级 隐藏元素的方法 px和rem的区别是什么? 重绘重排有什么区别? 重排&#xff08;回流&#xff09;&#xff1a; 重绘&#xff1a; 浏览器的渲染机制: 浏览器如何解析CSS&#xff1f; 元素水平垂直居中的方式 CSS的哪些属性哪些可以…

php开发项目 docx,pptx,excel表格上传阿里云,腾讯云存储后截取第一页生成缩略图

服务器或者存储上传的word,ppt和excel表格需要截取内容展示的时候,就需要管理后台每次上传文件时根据不同文件类型截取图片保存起来,并讲图片的地址保存到数据字段中.网上搜索了很多相关文章遇到的坑不少,经过2天时间终于完成了,将代码和遇到的问题完整记录下来. 本文用的…

【前端寻宝之路】总结学习使用CSS的引入方式

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-BNJBIEvpN0GHNeJ1 {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

IDEA自动导入provided的依赖

最近在学习flink 流程序&#xff0c;在写demo程序的时候依赖flink依赖&#xff0c;依赖的包在flink集群里面是自己已经提供了的&#xff0c;在导入的时候配置为provided&#xff0c;像下面这样&#xff0c;以使打包的时候不用打到最终的程序包里面。 <dependency><gro…

Java8,函数式编程应用:

持续更新中&#xff1a; 函数式(Functional)接口 什么是函数式(Functional)接口 只包含一个抽象方法的接口&#xff0c;称为函数式接口。 你可以通过 Lambda 表达式来创建该接口的对象。&#xff08;若 Lambda 表达式 抛出一个受检异常(即&#xff1a;非运行时异常)&#xff0c…

js创建对象方式总结

js创建对象方式总结 字面量方式 使用大括号 {} 创建一个新对象&#xff0c;这是最简单直接的方式。适用于创建单个对象&#xff0c;可以直接在大括号内定义属性和方法。 let person {name: John,age: 30,gender: male};let preson2 {name: John,age: 30,gender: male};cons…

光伏发电预测

XGB、LGB在datacamp(学习网站) data fountain与国家电投系列赛,光伏发电预测 题目:给一组特征,预测瞬时发电量,训练集9000个点,测试集8000个点,特征包含光伏板的属性和外部环境等。 数据字段:ID、光伏电池板背侧温度、光伏电站现场温度、计算得到的平均转换效率、数…

MySQL学习Day25——数据库其他调优策略

一、数据库调优的措施: 1.调优的目标: (1)尽可能节省系统资源&#xff0c;以便系统可以提供更大负荷的服务 (2)合理的结构设计和参数调整&#xff0c;以提高用户操作的响应速度 (3)减少系统的瓶颈&#xff0c;提高MySQL数据库整体的性能; 2.如何定位调优:用户的反馈、日志…

stm32f103zet6笔记1-led工程

1、选择串口调试 2、LED0连接到PB5&#xff0c;PB5设置为推挽输出。PE5同理。 3、生成成对的.c,.h文件。 4、debugger选择j-link。 5、connection选择SWD。 6、编写bsp_led.c,bsp_led.h文件。 7、下载调试&#xff0c;可以看到LED0 500ms闪烁一次&#xff0c;LED1 1000ms闪烁一…

浅谈一个CTF中xss小案例

一、案例代码 二、解释 X-XSS-Protection: 0&#xff1a;关闭XSS防护 之后get传参&#xff0c;替换过滤为空&#xff0c;通过过滤保护输出到img src里面 三、正常去做无法通过 因为这道题出的不严谨所以反引号也是可以绕过的 正常考察我们的点不在这里&#xff0c;正常考察…

Unity之街机捕鱼

目录 &#x1f62a;炮台系统 &#x1f3b6;炮口方向跟随鼠标 &#x1f3b6;切换炮台 &#x1f62a;战斗系统 &#x1f3ae;概述 &#x1f3ae;单例模式 &#x1f3ae;开炮 &#x1f3ae;子弹脚本 &#x1f3ae;渔网脚本 &#x1f3ae;鱼属性信息的脚本 &#x1f6…

怎样获得CNVD原创漏洞证书

1. 前言 因为工作变动&#xff0c;我最近把这一年多的工作挖漏洞的一些工作成果提交到了CNVD漏洞平台&#xff08;https://www.cnvd.org.cn/&#xff09;&#xff0c;获得了多张CNVD原创漏洞证书。本篇博客讲下怎么获得CNVD原创漏洞证书&#xff0c;以供大家参考。 2. CNVD原创…

Canvas笔记03:Canvas元素功能、属性、获取、原理等一文讲透

hello&#xff0c;我是贝格前端工场&#xff0c;最近在学习canvas&#xff0c;分享一些canvas的一些知识点笔记&#xff0c;本期分享canvas元素的知识&#xff0c;欢迎老铁们一同学习&#xff0c;欢迎关注&#xff0c;如有前端项目可以私信贝格。 Canvas元素是HTML5中的一个重…

基于Intel x86的轨道交通/印度地铁自动售检票(AFC)系统

印度孟买地铁3号线 目前&#xff0c;印度孟买3号线正在全面建设中&#xff0c;这条全长33.5公里的线路将是孟买第一条地下地铁线路&#xff0c;设有27个地下车站和1个地面车站&#xff0c;此条线路的成功通车将连接其他地铁线路、单轨铁路、郊区铁路、城际铁路和孟买机场等&am…

解决prettier 报错 Delete `␍`

根目录&#xff08;么有的话&#xff09;新建 .prettierrc.js配置文件 module.exports {tabWidth: 2,semi: true,printWith: 80,singleQuote: true,quoteProps: consistent,htmlWhitespaceSensitivity: strict,vueIndentScriptAndStyle: true,// 主要是最后一行endOfLine:aut…

Ubuntu环境使用docker构建并运行SpringBoot镜像

今天Ubuntu环境使用docker构建并运行SpringBoot镜像&#xff0c;看文章之前建议先查看安装流程: Linux环境之Ubuntu安装Docker流程 一、镜像打包过程及执行 1、创建一个测试目录 mkdir javaDemo 2、springBoot的包复制到此目录下 cp demo1-0.0.1-SNAPSHOT.jar /data/app/…

计算机网络实验 基于ENSP的协议分析

实验二 基于eNSP的协议分析 一、实验目的&#xff1a; 1&#xff09;熟悉VRP的基本操作命令 2&#xff09;掌握ARP协议的基本工作原理 3&#xff09;掌握IP协议的基本工作原理 4&#xff09;掌握ICMP协议的基本工作原理 二、实验内容&#xff1a; 1、场景1&#xff1a;两台PC机…

React-子传父

1.概念 说明&#xff1a;React中子组件向父组件传递数据通常涉及回调函数和状态提升等方法。 2.代码实现 2.1绑定事件 说明&#xff1a;父组件绑定自定义事件 <Son onGetSonMsg{getMsg}></Son> 2.2接受事件 说明&#xff1a;子组件接受父组件的自定义事件名称…