当前位置: 首页 > 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&…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...

【Redis】Redis从入门到实战:全面指南

Redis从入门到实战:全面指南 一、Redis简介 Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,它可以用作数据库、缓存和消息代理。由Salvatore Sanfilippo于2009年开发,因其高性能、丰富的数据结构和广泛的语言支持而广受欢迎。 Redis核心特点:…...

【汇编逆向系列】四、函数调用包含单个参数之Double类型-mmword,movsd,mulsd,addsd指令,总结汇编的数据类型

一、汇编代码 上一节开始&#xff0c;讲到了很多debug编译独有的汇编方式&#xff0c;为了更好的区分release的编译器优化和debug的区别&#xff0c;从本章节开始将会提供debug和release的汇编用作对比 Debugb编译 single_double_param:00000000000000A0: F2 0F 11 44 24 08…...

Python基于蒙特卡罗方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融投资中&#xff0c;风险管理是确保资产安全和实现稳健收益的关键环节。随着市场波动性的增加&#xff0c;传统…...