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的地方开始,直到长度为4
    cout<<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;
    else
        cout << "查找失败";
    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;
}

 输出结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

#WEB前端(CCS选择器)

1.实验&#xff1a;CCS选择器 2.IDE&#xff1a;VSCODE 3.记录&#xff1a; 子代选择器、后代选择器、相邻兄弟选择器、类选择器、伪元素选择器&#xff08;鼠标悬停&#xff09;、ID选择器、调用选择器&#xff08;全选&#xff09; 4.代码&#xff1a; <!DOCTYPE html…

Vue.js 实用技巧:深入理解 Vue.set 方法

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

JMeter常用函数整理

"_csvRead"函数 csvRead函数是从外部读取参数&#xff0c;csvRead函数可以从一个文件中读取多个参数。 下面具体讲一下如何使用csvread函数&#xff1a; 1.新建一个csv或者text文件&#xff0c;里面保存要读取的参数&#xff0c;每个参数间用逗号相隔。每行表示每一组…

MATLAB:Image Processing Toolbox工具箱入门实战

目录 1.基本图像导入、处理和导出 2.实战项目一&#xff1a;利用imfindcircles()函数检测和测量图像中的圆形目标 1.基本图像导入、处理和导出 Basic Image Import, Processing, and Export- MATLAB & SimulinkThis example shows how to read an image into the worksp…

BUUCTF---[极客大挑战 2019]Http1

1.题目描述&#xff0c;在地址框输入下面的网址 2.来到页面&#xff0c;ctrlu查看源码&#xff0c;仔细观察会看到一个.php的跳转页面 3.点进去页面提示It doesnt come from https://Sycsecret.buuoj.cn 4.页面提示它不是来源于这个网址&#xff0c;我们需要用bp抓包对数据进行…

从0到1全流程使用 segment-anything

从0到1全流程使用 segment-anything 一、安装 anaconda 一、下载 anaconda 二、以管理员身份运行安装 1、勾选 Just Me 2、统一安装路径(后续 python 等包也安装至此目录) 3、勾选 add to path 然后安装即可。 三、修改 Anaconda 默认路径及默认缓存路径 Anaconda 默认下…

神经网络3-时间卷积神经网络

在深度学习的知识宝库中&#xff0c;卷积神经网络&#xff08;CNN&#xff09;广泛应用于视觉&#xff0c;视频等二维或者多维的图像领域。卷积网络具有深度&#xff0c;可并行等多种优良特性&#xff0c;那么这种技术是否可以应用于解单维度的时间序列问题呢&#xff1f;本文介…

基于Springboot的助农管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的助农管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

UTONMOS元宇宙游戏发展趋势是什么?

UTONMOS元宇宙游戏的发展趋势包括以下几个方面&#xff1a; 更加真实的体验&#xff1a;随着技术的进步&#xff0c;UTONMOS元宇宙游戏将提供更加逼真的视觉、听觉和触觉体验&#xff0c;让玩家更加身临其境。 社交互动&#xff1a;UTONMOS元宇宙游戏将越来越注重社交互动&am…

Linux系统宝塔面板搭建Typecho博客并实现公网访问本地网站【内网穿透】

文章目录 前言1. 安装环境2. 下载Typecho3. 创建站点4. 访问Typecho5. 安装cpolar6. 远程访问Typecho7. 固定远程访问地址8. 配置typecho 前言 Typecho是由type和echo两个词合成的&#xff0c;来自于开发团队的头脑风暴。Typecho基于PHP5开发&#xff0c;支持多种数据库&#…

Windows服务器:通过nginx反向代理配置HTTPS、安装SSL证书

先看下效果&#xff1a; 原来的是 http&#xff0c;配置好后 https 也能用了&#xff0c;并且显示为安全链接。 首先需要 SSL证书 。 SSL 证书是跟域名绑定的&#xff0c;还有有效期。 windows 下双击可以查看相关信息。 下载的证书是分 Apache、IIS、Tomcat 和 Nginx 的。 我…

9.10目标和(LC494-M)

算法&#xff1a; 加法的绝对值的集合left 减法的绝对值的集合right nums集合的总和sum 这里的left和right都是绝对值&#xff1a; leftrightsum → rightsum-left left-righttarget → left-(sum-left) target → left (target sum)/2 &#xff0c;target …

最新AI系统ChatGPT网站H5系统源码,支持Midjourney绘画

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持GPT…

python封装,继承,复写详解

目录 1.封装 2.继承 复写和使用父类成员 1.封装 class phone:__voltage 0.5def __keepsinglecore(self):print("单核运行")def callby5g(self):if self.__voltage > 1:print("5g通话开启")else:self.__keepsinglecore()print("不能开启5g通…

xshell安装java/jdk

1.下载jdk wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz 2.解压jdk安装包 tar -zxvf openjdk-11.0.1_linux-x64_bin.tar.gz 其中第三步 编辑 ~/.bashrc 或 ~/.bash_profile 文件 打开vim文本编辑器 vim ~/.bash_profile export …

TT-100K数据集

TT-100K数据集 TT100K数据集是由清华大学和腾讯联合实验室整理并公布的一个大型交通标志数据集。已整理好由xml格式和txt格式。共6105张图片。 有偿分享。可以加我qq&#xff1a;2638351996。注明来意&#xff01;&#xff01;&#xff01;&#xff01;

深入理解Python递归:注意事项、示例及应用场景

文章目录 一、递归的注意事项二、Python代码示例三、使用场景及代码运行结果四、递归的其他应用场景其他示例 五、总结 递归是编程中的一种强大的技术&#xff0c;它允许函数调用自身来解决问题。在Python中&#xff0c;递归被广泛应用&#xff0c;尤其是在处理数据结构&#x…

算法沉淀——动态规划之01背包问题(leetcode真题剖析)

算法沉淀——动态规划之01背包问题 01.【模板】01背包02.分割等和子集03.目标和04.最后一块石头的重量 II 01背包问题是一类经典的动态规划问题&#xff0c;通常描述为&#xff1a;有一个固定容量的背包&#xff0c;以及一组物品&#xff0c;每件物品都有重量和价值&#xff0c…

大数据核心技术概论

大数据核心技术概述 大数据基石三大论文&#xff1a;GFS&#xff08;Hadoop HDFS&#xff09;、BigTable&#xff08;Apache HBase&#xff09;、MapReduce&#xff08;Hadoop MapReduce&#xff09;。 搜索引擎的核心任务&#xff1a;一是数据采集&#xff0c;也就是网页的爬…

如何用bashrc将远程服务器上的环境变量切换到指定anaconda目录下

如何用bashrc将远程服务器上的环境变量切换到指定anaconda目录下 问题描述解决办法 问题描述 远程服务器上已经配置了tensorflow2环境&#xff0c;但是导入环境时缺显示没有这个环境&#xff0c;需要添加环境变量。 显示没有tensorflow2这个环境。 解决办法 1.使用vi打开编…