当前位置: 首页 > news >正文

【笔记】C语言转C++

网课链接:【C语言 转 C++ 简单教程】 https://www.bilibili.com/video/BV1UE411j7Ti/?p=27&share_source=copy_web&vd_source=4abe1433c2a7ef632aeed6a3d5c0b22a

网课老师B站id:别喷我id 

视频总时长:01:55:27

以下笔记是我通过此网课整理 建议先看完网课 再用这个笔记进行复习

网课老师同时整理了思维导图 可以在视频简介获取

/*用C++刷算法的不同之处:1、兼容C语言2、丰富的STL库3、string很好用4、时间上要差一些
*/#include<iostream>  // 输入输出流 input output
#include<cstring>  //即#include<string.h>
// C++中,C语言中的头文件都可以通过去掉.h,在开头加c实现
#include<string> 
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<bitset>
#include<algorithm> // sort()函数的头文件 algorithm算法
#include<cctype>
using namespace std;
// 使用名称空间 避免不同厂商使用的函数名称重复导致的误用
// 所以每家厂商将自己的函数封装在自己设定的名称空间里//结构体&引用&和传值//结构体
struct stu {string name;int age;
};
// stu a[10];  直接用stu命名变量// 引用: 引用的时候会把初始变量也改变 约等于c语言里的指针不写*
// 传值: 传值只改变函数里的变量 不会带到函数外 bool cmp1(int x, int y) {return x > y;
}
// 返回值为真 那么x放在y前面
// 返回值为假 交换两个数bool cmp2(stu a, stu b) {if (a.age != b.age)return a.age < b.age;elsereturn a.name < b.name;
}
// 以年龄为第一限制条件从小到大排序 
// 年龄相同就参考第二限制条件 按名字的ACSII码从小到大排序int main()
{//输入输出等基本int n;cin >> n;// 输入cin(记in)cout << "wohaoshuai!" << ++n << endl; // 输出cout(记out) 换行endl("\n")// cin cout的运算速度会低于scanf和printf/*若没有提前使用名称空间也可以在main函数中调用的时候使用以下格式:std::cinstd::coutstd::endl*/cout << "*******************" << endl;// bool和constfor (int i = 0; i < 10; i++)cout << n << " ";// 可在循环里定义变量icout << endl;bool flag = true;bool flag2 = -1;bool flag3 = 0;// bool将值判为0或1(非0即为1)cout << flag << " " << flag2 << " " << flag3 << endl;const int MAX = 150;// const定义的常量无法进行更改 可看做宏定义// MAX = 100; 此表达式会报错cout << MAX << endl;cout << "*******************" << endl;// 字符串// 定义字符串string s1 = "hello";string s2 = " world!";string s3 = s1 + s2;cout << s3 << endl;getline(cin, s1);// cin只能输入空格前的字符 getline可以输入一整行 但要声明头文件stringcout << s1 << endl << s1.length() << endl; // 此长度不包括\0// 子串string s1_sub = s1.substr(1, 2);// s.substr(n1,n2)(从下标为n1的字符开始,取n2个字符)// s.substr(n1)(从下标为n1的字符开始取,取完)// 【字符串下标从0开始算】cout << s1_sub << endl;cout << "*******************" << endl;// STL篇// vector 矢量向量/动态数组/不定(可变)参数组vector<int>v; // 定义一个长度为0的空数组v.resize(10);  // v.resize(length); 重新分配数组大小for (int i = 0; i < 10; i++)v[i] = i;for (int i = 0; i < 10; i++)cout << v[i] << " ";v.push_back(11); // 给数组扩充一个新空间 给首个空位赋值为11for (int i = 0; i < 11; i++)cout << v[i] << " ";cout << endl << v.size() << endl;vector<int>d(10, 2); // 定义一个长度为10,每个值都为2的数组d.size(); //变量名.方法for (auto p = d.begin(); p != d.end(); p++)  // b.end()的位置是最后一个元素的后一位cout << *p << " ";// 迭代器 自动遍历一遍数组中所有的数据cout << "*******************" << endl;// set 集合 里面的元素各不相同 而且元素会按照从小到大排序// unordered_set 省去排序过程(无序)的集合 要用#include<unordered_set>// unordered_set<int>s;  这样定义 其它调用方法和set一模一样set<int>s;s.insert(1);s.insert(2);s.insert(3);for (auto p = s.begin(); p != s.end(); p++)cout << *p << ' ';cout << endl;cout << (s.find(2) != s.end()) << endl;// 集合中找2 找到后返回2的位置 和s.end()的位置不同即返回1 说明找到了cout << (s.find(4) != s.end()) << endl;// 集合中找4 找到后返回4的位置 和s.end()的位置相同即返回0 说明未找到s.erase(1);  // 删除1cout << (s.find(1) != s.end()) << endl;cout << "*******************" << endl;// map 键值对 自动将所有的键值对按照键(ASCII)从小到大排序// unordered_map 省去排序过程(无序)的键值对 要用#include<unordered_map>// unordered_map<int>m;  这样定义 其它调用方法和map一模一样map<string, int>m;m["hello"] = 2;m["world"] = 3;m["ilovewuhan"] = 5;m["ha"] = 6;/*struct{string key;int data;}*/cout << "hello:" << m["hello"] << endl;for (auto p = m.begin(); p != m.end(); p++)cout << p->first << ":" << p->second << endl;// p->first为键 p->second为值cout << "map的长度为:" << m.size() << endl; // size容器cout << "*******************" << endl;// 栈和队列// stack 栈stack<int>sta;sta.push(1);sta.push(2);sta.push(3);sta.pop();sta.push(76);cout << sta.top() << endl;cout << "栈的长度为:" << sta.size() << endl;// 无法使用迭代器 栈只能获得栈顶元素// queue 队列queue<int>q;for (int i = 1; i <= 10; i++)q.push(i);q.pop();cout << "队首为:" << q.front() << endl << "队尾为:" << q.back() << endl;cout << q.size() << endl;cout << "*******************" << endl;// bitset 字符数组 从二进制的低位到高位依次为b[0]、b[1]……bitset<5>b(19);  // 5个二进制位 将19转化为二进制 即10011// bitset<5>b; 即初始化为00000// bitset<5>b("11"); 直接赋二进制的值 即为00011cout << b << endl; //直接输出这个字符for (int i = 0; i < b.size(); i++)cout << b[i] << " ";// 从低位到高位一个一个输出cout << endl;cout << "是否有1:" << b.any() << endl;cout << "是否不存在1:" << b.none() << endl;cout << "1的个数:" << b.count() << endl;cout << "b中元素个数:" << b.size() << endl;cout << "下标为i的元素是不是1:" << b.test(0) << endl;b.flip(1); // 第1位取反(是从右边开始数的第0位、第1位)// b.flip() 所有位取反b.reset(2); // 第2位归零// b.reset() 所有位归零cout << b << endl;unsigned long z = b.to_ulong(); // 转化为十进制cout << z << endl;string e = "0110101";bitset<5>c(e, 0, 5); // bitset<二进制位数>c(字符串,位置,取的位数)// 即bitset<5>c("01101");cout << "*******************" << endl;// sort函数 对一个数组进行排序(默认从小到大)// vector是容器 需要用v.begin()表示头 v.end()表示尾// int arr[]使用arr表示数组的首地址 arr+n表示尾部vector<int>g(10);for (int i = 9; i >= 0; i--)g[i] = 9 - i;for (int i = 0; i < 10; i++)cout << g[i] << " ";cout << endl;g.push_back(-1);sort(g.begin(), g.end()); // [ ) 左闭右开for (int i = 0; i < 11; i++)cout << g[i] << " ";cout << endl;sort(g.begin(), g.end(), cmp1); // cmp 自定义排序规则(需另外定义函数)for (int i = 0; i < 11; i++)cout << g[i] << " ";cout << endl;stu a[10];for (int i = 0; i < 10; i++)cin >> a[i].name >> a[i].age;sort(a, a + 10, cmp2);for (int i = 0; i < 10; i++)cout << a[i].name << " " << a[i].age << endl;cout << "*******************" << endl;// cctype头文件的函数char f = 'A';cout << "isalpha" << isalpha(f) << endl; // 字母?cout << "islower" << islower(f) << endl; // 小写字母?cout << "isupper" << isupper(f) << endl; // 大写字母?cout << "isalnum" << isalnum(f) << endl; // 字母or数字?cout << "isspace" << isspace(f) << endl; // space \t \r \n?char f1 = tolower(f); // 转化为小写字母cout << f1 << endl;char f2 = toupper(f); // 转化为大写字母cout << f2 << endl;cout << "*******************" << endl;// C++11篇// C++11的解释:2011年官方带来的新的语法标准 新增了很多特性   // dev c++使用C++11里的函数需要设置 // Settings->Compiler->C++11那一行勾选上->OK// auto声明  可以让编译器根据初始值直接推断变量的类型auto x = 19;auto y = 1.8;// 用auto定义的时候一定要初始化赋值// 迭代器用到auto(可用迭代器的有vector set map)// 基于范围的for循环int k[5] = { 1 };for (int i : k) // i作为参数不会带出for循环 类似于函数 除非给i改成&i取地址i++;for (int i : k)cout << i << " ";cout << endl;vector<int>k2(10, 1);for (auto i : k2) // 相当于迭代器 所有的容器都可以通过这种方式循环cout << i << " ";cout << endl;// to_string 将数字转化为字符变量string o = to_string(123.1); // 这边浮点型会自动保留到小数点后六位cout << o << endl;printf("%s\n", o.c_str()); // printf输出的形式// stoi和stod 将字符串转化为其它变量// 记忆方法:stoi (string to int)   stod (string to double) // 还有stof stold stol stoll stoul stoull等一系列int r = stoi("123");cout << r << endl;double t = stod("12.34");cout << t << endl;return 0;
}

相关文章:

【笔记】C语言转C++

网课链接&#xff1a;【C语言 转 C 简单教程】 https://www.bilibili.com/video/BV1UE411j7Ti/?p27&share_sourcecopy_web&vd_source4abe1433c2a7ef632aeed6a3d5c0b22a 网课老师B站id:别喷我id 视频总时长&#xff1a;01:55:27 以下笔记是我通过此网课整理 建议先…...

锂电池SOH预测 | 基于BiGRU双向门控循环单元的锂电池SOH预测,附锂电池最新文章汇集

锂电池SOH预测 | 基于BiGRU双向门控循环单元的锂电池SOH预测&#xff0c;附锂电池最新文章汇集 目录 锂电池SOH预测 | 基于BiGRU双向门控循环单元的锂电池SOH预测&#xff0c;附锂电池最新文章汇集预测效果基本描述程序设计参考资料 预测效果 基本描述 锂电池SOH预测 | 基于Bi…...

半导体器件与物理篇5 1~4章课后习题

热平衡时的能带和载流子浓度 例 一硅晶掺入每立方厘米10^{16}个砷原子&#xff0c;求室温下(300K)的载流子浓度与费米能级。 需要用到的公式包括1.本征载流子浓度公式 2.从导带底算起的本征费米能级 2.从本征费米能级算起的费米能级 载流子输运现象 例1:计算在300K下&#x…...

Pytest-Bdd-Playwright 系列教程(16):标准化JSON报告Gherkin格式命令行报告

Pytest-Bdd-Playwright 系列教程&#xff08;16&#xff09;&#xff1a;标准化JSON报告&Gherkin格式命令行报告 前言一、创建Feature文件二、创建步骤定义文件三、生成Cucumber格式的JSON报告四、使用Gherkin格式的命令行报告五、将BDD报告集成到Jenkins中总结 前言 在自动…...

机器学习之学习范式

机器学习的四种主要范式分别是&#xff1a;监督学习、非监督学习、强化学习和半监督学习。以下是每种范式的详细介绍&#xff1a; 1. 监督学习&#xff08;Supervised Learning&#xff09; 定义&#xff1a; 通过已标注的数据训练模型&#xff0c;以预测或分类未知数据。 目…...

PHPstudy中的数据库启动不了

法一 netstat -ano |findstr "3306" 查看占用该端口的进程号 taskkill /f /pid 6720 杀死进程 法二 sc delete mysql...

鸿蒙开发-ArkTS 创建自定义组件

在 ArkTS 中创建自定义组件是一个相对简单但功能强大的过程。以下是如何在 ArkTS 中创建和使用自定义组件的详细步骤&#xff1a; 一、定义自定义组件 使用Component注解&#xff1a;为了注册一个组件&#xff0c;使其能够在其他文件中被引用&#xff0c;你需要使用Component…...

记录学习《手动学习深度学习》这本书的笔记(五)

这一章是循环神经网络&#xff0c;太难了太难了&#xff0c;有很多卡壳的地方理解了好久&#xff0c;比如隐藏层和隐状态的区别、代码的含义&#xff08;为此专门另写了一篇【笔记】记录对自主实现一个神经网络的步骤的理解&#xff09;、梯度计算相关&#xff08;【笔记】记录…...

【Qt】Qt+Visual Studio 2022环境开发

在使用Qt Creator的过程中&#xff0c;项目一大就会卡&#xff0c;所以我一般都是用VS开发Cmake开发&#xff0c; 在上一篇文章中&#xff0c;我已经安装了CMake&#xff0c;如果你没有安装就自己按一下。 记得配置Qt环境变量&#xff0c;不然CMake无法生成VS项目&#xff1a…...

云计算HCIP-OpenStack04

书接上回&#xff1a; 云计算HCIP-OpenStack03-CSDN博客 12.Nova计算管理 Nova作为OpenStack的核心服务&#xff0c;最重要的功能就是提供对于计算资源的管理。 计算资源的管理就包含了已封装的资源和未封装的资源。已封装的资源就包含了虚拟机、容器。未封装的资源就是物理机提…...

HCIA-Access V2.5_3_2_VLAN数据转发

802.1Q的转发原则--Access-Link 首先看一下Access,对于Access端口来说&#xff0c; 它只属于一个VLAN,它的VLANID等于PVID。 首先看一下接收方向&#xff0c;前面说过交换机内部一定要带标签转发&#xff0c;所以当交换机接收到一个不带tag的数据帧时&#xff0c;会给它打上端…...

transformer学习笔记-导航

本系列专栏&#xff0c;主要是对transformer的基本原理做简要笔记&#xff0c;目前也是主要针对个人比较感兴趣的部分&#xff0c;包括&#xff1a;神经网络基本原理、词嵌入embedding、自注意力机制、多头注意力、位置编码、RoPE旋转位置编码等部分。transformer涉及的知识体系…...

功能篇:JAVA后端实现跨域配置

在Java后端实现跨域配置&#xff08;CORS&#xff0c;Cross-Origin Resource Sharing&#xff09;有多种方法&#xff0c;具体取决于你使用的框架。如果你使用的是Spring Boot或Spring MVC&#xff0c;可以通过以下几种方式来配置CORS。 ### 方法一&#xff1a;全局配置 对于所…...

防火墙内局域网特殊的Nginx基于stream模块进行四层协议转发模块的监听443 端口并将所有接收转发到目标服务器

在一些特殊场合下, 公司内部网络防火墙限制, 不能做端口映射, 此时可以使用nginx的做从四层协议转发, 只走tcp/ip协议, 而不走http方式, 可以做waf设置, 就可以做443, 或其它端口, 从而达到被直接转发到远程服务器效果 机房只映射了一个IP:22280, 而需求是这个SDK只能通过…...

【Hive】-- hive 3.1.3 伪分布式部署(单节点)

1、环境准备 1.1、版本选择 apache hive 3.1.3 apache hadoop 3.1.0 oracle jdk 1.8 mysql 8.0.15 操作系统:Mac os 10.151.2、软件下载 https://archive.apache.org/dist/hive/ https://archive.apache.org/dist/hadoop/ 1.3、解压 tar -zxvf apache-hive-4.0.0-bin.tar…...

C++ STL 队列queue详细使用教程

序言 我们平常写广搜什么&#xff0c;上来就是一句 queue<XXX> qu; 说明队列时很重要的。 STL库中的queue把队列的各种操作封装成一个类&#xff0c;非常方便&#xff0c;信奥中使用它也是很有优势的。 目录 一、队列的定义 二、创建队列对象 三、队列的初始化 四、常…...

【前端】JavaScript 中的 filter() 方法的理论与实践深度解析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;filter() 方法的概念与原理1. 什么是 filter()&#xff1f;2. 基本工作原理3. 方法特点4. 用法格式参数解析 &#x1f4af;代码案例详解示例&#xff1a;筛选有效数字并…...

【机器学习算法】——决策树之集成学习:Bagging、Adaboost、Xgboost、RandomForest、XGBoost

集成学习 **集成学习(Ensemble learning)**是机器学习中近年来的一大热门领域。其中的集成方法是用多种学习方法的组合来获取比原方法更优的结果。 使用于组合的算法是弱学习算法&#xff0c;即分类正确率仅比随机猜测略高的学习算法&#xff0c;但是组合之后的效果仍可能高于…...

JVM运行时数据区内部结构

VM内部结构 对于jvm来说他的内部结构主要分成三个部分&#xff0c;分别是类加载阶段&#xff0c;运行时数据区&#xff0c;以及垃圾回收区域&#xff0c;类加载我们放到之后来总结&#xff0c;今天先复习一下类运行区域 首先这个区域主要是分成如下几个部分 下面举个例子来解释…...

Navicat for MySQL 查主键、表字段类型、索引

针对Navicat 版本11 &#xff0c;不同版本查询方式可能不同 1、主键查询 &#xff08;重点找DDL&#xff01;&#xff01;&#xff01;&#xff09; 方法&#xff08;1&#xff09; &#xff1a;右键 - 对象信息 - 选择要查的表 - DDL - PRIMARY KEY 方法&#xff08;2&…...

如何在谷歌浏览器中实现自定义主题

在数字化时代&#xff0c;个性化设置已成为提升用户体验的重要一环。对于广泛使用的谷歌浏览器而言&#xff0c;改变默认的浏览器主题不仅能够美化界面&#xff0c;还能在一定程度上提升使用效率和愉悦感。本文将详细介绍如何在谷歌浏览器中实现自定义主题&#xff0c;包括从官…...

visual studio 2022 c++使用教程

介绍 c开发windows一般都是visual studio&#xff0c;linux一般是vscode&#xff0c;但vscode调试c不方便&#xff0c;所以很多情况都是2套代码&#xff0c;在windows上用vs开发方便&#xff0c;在转到linux。 安装 1、官网下载vs2022企业版–选择桌面开发–安装位置–安装–…...

曝光三要素

一光圈 光圈越大&#xff0c;数值越小&#xff0c;画面越亮&#xff0c;背景越模糊 光圈越小&#xff0c;数值越大&#xff0c;画面越暗&#xff0c;背景越清晰 二 快门 快门最主要的作用是控制曝光时间的长短 快门速度的单位是秒&#xff0c;一般用 1秒&#xff0c;1/8秒&am…...

01-2 :PyCharm安装配置教程(图文结合-超详细)

一、PyCharm安装 PyCharm集成开发工具&#xff08;IDE&#xff09;&#xff0c;是当下全球Python开发者&#xff0c;使用最频繁的工具软件。 绝大多数的Python程序&#xff0c;都是在PyCharm工具内完成的开发。 本篇文章基于PyCharm软件工具进行描述&#xff0c;教你如何安装…...

类OCSP靶场-Kioptrix系列-Kioptrix Level 1

一、前情提要 二、实战打靶 1. 信息收集 1.1. 主机发现 1.2. 端口扫描 1.3 目录爆破 1.4. 敏感信息 2.根据服务搜索漏洞 2.1. 搜索exp 2.2. 编译exp 2.3. 查看exp使用方法&#xff0c;并利用 3. 提权 二、第二种方法 一、前情提要 Kioptrix Level是免费靶场&#x…...

Maven插件打包发布远程Docker镜像

dockerfile-maven-plugin插件的介绍 dockerfile-maven-plugin目前这款插件非常成熟&#xff0c;它集成了Maven和Docker&#xff0c;该插件的官方文档地址如下&#xff1a; 地址&#xff1a;https://github.com/spotify/dockerfile-maven 其他说明&#xff1a; dockerfile是用…...

VisualStudio vsix插件自动加载

本文介绍如何在Visual Studio扩展中实现PackageRegistration&#xff0c;包括设置UseManagedResourcesOnly为true&#xff0c;允许背景加载&#xff0c;并针对C#、VB、F#项目提供自动装载&#xff0c;附官方文档链接。增加以下特性即可…… [PackageRegistration(UseManagedRe…...

Codesoft许可管理

在数字化时代&#xff0c;软件许可管理对于确保企业资产安全、优化成本和提高工作效率至关重要。Codesoft作为一款功能强大的标签设计软件&#xff0c;其许可管理功能同样出色。本文将为您介绍如何进行Codesoft的许可管理&#xff0c;确保您的软件投资得到最大回报。 一、了解…...

Unity3D 3D模型/动画数据压缩详解

前言 在Unity3D项目中&#xff0c;3D模型和动画数据通常占用大量内存和存储空间&#xff0c;有效的数据压缩技术对于提升游戏性能和加载速度至关重要。本文将详细介绍Unity3D中3D模型和动画数据的压缩技术&#xff0c;并提供相关的代码实现。 对惹&#xff0c;这里有一个游戏…...

ffmpeg和ffplay命令行实战手册

文章目录 视频拼接用concat视频分段拼接(ffplay 不可调用seek函数进行seek)给视频添加黑边&#xff0c;让视频填充并居中显示不同分辨率视频分段拼接&#xff0c;并且&#xff0c;设置单个视频的缩放比例和摆放位置视频画中画复杂嵌套用overlay(ffplay 可调用seek函数进行seek)…...