算法学习C++需注意的基本知识

文章目录

  • 01_算法中C++需注意的基本知识
    • cmath头文件
    • 一些计算符
    • ASCII码表
    • 数据类型长度
    • 运算符
    • cout固定输出格式
    • 浮点数的比较
    • max排序自定义类型
    • 字符的大小写转换与判断
    • 判断字符是数字还是字母
  • 02_数据结构需要注意的内容
  • 1.string
    • getline函数的使用
    • string::find
    • substr截取字符串
    • string与int之间的转化
    • 翻转字符串
  • 2.优先级队列(priority_queue)
  • 3.set
    • unique去重函数

01_算法中C++需注意的基本知识

cmath头文件

C++ 标准库标头 - cppreference.com

sqrt计算平方根

pow计算平方

fabs计算浮点数绝对值

abs计算整数的绝对值

ceil浮点数向上取整

floor浮点数向下取整

一些计算符

#include <iostream>
using namespace std;int main()
{double a = 1e5;//1.0*10^5cout<<a<<endl; // 100000return 0;
}

ASCII码表

image-20250112195919386

A~Z: 65~90

A~Z: 97~122 两者中间相差32

0~9: 48~57

\n: 10

数据类型长度

#define SHRT_MIN (-32768) //有符号16位整型的最⼩值
#define SHRT_MAX 32767 //有符号16位整型的最⼤值
#define USHRT_MAX 0xffffU //⽆符号16位整型的最⼤值
#define INT_MIN (-2147483647 - 1) //有符号整型的最⼩值
#define INT_MAX 2147483647 //有符号整型的最⼤值
类型最小值最大值
charCHAR_MIN (-27) [-128]CHAR_MAX (27-1) [127]
unsigned char0UCHAR_MAX (28-1) [255]
shortSHRT_MIN (-215)SHRT_MAX (215-1) [32767]
unsinged short0USHRT_MAX (216-1)
intINT_MIN (-232)INT_MAX (232-1)
unsigned int0UINT_MAX (232-1)
longLONG_MIN (-231)LONG_MAX (232-1)
unsigned long0ULONG_MAX (231-1)
long longLONG_MIN (-263)LONG_MAX (263-1)
usigned long longLLONG_MIN (0)ULLONG_MAX (264-1)

运算符

%两边需要为整数,不能为小数

用小数去/结果才会出现小数

%运算时结果的正负仅仅和第一个操作数有关如: -11 % -5 = -1 -11 % 5 = -1 11 % -5 = 1

#include <iostream>
#include <cstdio>
using namespace std;int main()
{char ch = getchar();putchar(ch);return 0;
} 

cout固定输出格式

setu设置宽度 setfill设置填充

scientific固定为科学计数法表示

setprecision设置小数点位数 fixed固定为非科学计数法表示

image-20250113223221498

dec十进制 hex十六进制 oct八进制

left设置左对齐 right设置右对齐

image-20250113223130522

浮点数的比较

image-20250114130350935

image-20250114130123495

  1. C++中为了⽀持混合使⽤ cin/cout 和 scanf/printf ,C++ 标准库默认会将 cin 、 cout
    等 C++ 流对象与 stdin 、 stdout 等 C 标准库的流对象同步在⼀起。这种同步操作意味着每次
    使⽤ cin 或 cout 时,都会⾃动刷新 C 标准库的缓冲区,以确保 C++ 和 C 的 I/O 是⼀致的。这
    就导致了性能的下降。
  2. 在默认情况下, cin 和 cout 之间存在⼀种绑定关系。这种绑定意味着,每当从 cin 读取数据
    时,任何之前通过 cout 输出的内容都会被强制刷新到屏幕上。这种绑定也可能导致性能问题,特
    别是在需要频繁读取⼤量数据的情况下。

max排序自定义类型

image-20250409102618878

字符的大小写转换与判断

image-20250409100453132

image-20250409100307087

判断字符是数字还是字母

image-20250409101053597

02_数据结构需要注意的内容

1.string

getline函数的使用

#include <iostream>
using namespace std;
#include <string>int main()
{string s; getline(cin,s); //读入带空格的字符串 cout<<s;return 0;
}

默认以\n结束读取,当然也可自定义结束字符:

#include <iostream>
using namespace std;
#include <string>int main()
{string s; 
//	getline(cin,s); //读入带空格的字符串 
//	cout<<s;getline(cin,s,'a');cout<<s; return 0;
}

image-20250409083843007

string::find

int main()
{string s = "hello world hello everyone";string str = "llo";size_t n = s.find(str); //2cout<< n <<endl; n = s.find(str,n+1); //14cout<< n <<endl;return 0;
}

image-20250409084810105

substr截取字符串

image-20250409085030024

string与int之间的转化

image-20250409091156847

翻转字符串

image-20250409093042431

2.优先级队列(priority_queue)

自定义结构进行排序

#include <iostream>
using namespace std;
#include <queue>
struct node
{int x,y,z;//	//用y比较 创建小根堆 
//	bool operator < (const node& n1) const
//	{
//		return y>n1.y;
//	}//	用y比较 创建大根堆 bool operator < (const node& n1) const{return y<n1.y;}
};int main()
{priority_queue<node> hp;for(int i = 1;i<=10;i++){hp.push({i,i+1,i+i});}while(hp.size()){auto t = hp.top(); hp.pop();cout<<t.x<<" "<<t.y<<" "<<t.z<<endl;}
}

3.set

image-20250409103751973

unique去重函数

在这里插入图片描述

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

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

相关文章

从零开始写android 的智能指针

Android中定义了两种智能指针类型&#xff0c;一种是强指针sp&#xff08;strong pointer&#xff09;&#xff0c;源码中的位置在system/core/include/utils/StrongPointer.h。另外一种是弱指针&#xff08;weak pointer&#xff09;。其实称之为强引用和弱引用更合适一些。强…

【leetcode hot 100 152】乘积最大子数组

错误解法&#xff1a;db[i]表示以i结尾的最大的非空连续&#xff0c;动态规划&#xff1a;dp[i] Math.max(nums[i], nums[i] * dp[i - 1]); class Solution {public int maxProduct(int[] nums) {int n nums.length;int[] dp new int[n]; // db[i]表示以i结尾的最大的非空连…

图论整理复习

回溯&#xff1a; 模板&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本层集合中元素&#xff08;树中节点孩子的数量就是集合的大小&#xff09;) {处理节点;backtracking(路径&#xff0c;选择列表); // 递归回溯&#xff…

uniapp离线打包提示未添加videoplayer模块

uniapp中使用到video标签&#xff0c;但是离线打包放到安卓工程中&#xff0c;运行到真机中时提示如下&#xff1a; 解决方案&#xff1a; 1、把media-release.aar、weex_videoplayer-release.aar放到工程的libs目录下; 文档&#xff1a;https://nativesupport.dcloud.net.cn/…

打包构建替换App名称

方案适用背景 一套代码出多个安装包&#xff0c;且安装包的应用名称、图标都不一样考虑三语名称问题 通过 Gradle 脚本实现 gradle.properties 里面定义标识来区分应用&#xff0c;如下文里的 APP_TYPEAAA 、APP_TYPEBBB// 定义 groovy 替换方法 def replaceAppName(String …

DrissionPage移动端自动化:从H5到原生App的跨界测试

一、移动端自动化测试的挑战与机遇 移动端测试面临多维度挑战&#xff1a; 设备碎片化&#xff1a;Android/iOS版本、屏幕分辨率差异 混合应用架构&#xff1a;H5页面与原生组件的深度耦合 交互复杂性&#xff1a;多点触控、手势操作、传感器模拟 性能监控&#xff1a;内存…

达梦数据库用函数实现身份证合法校验

达梦数据库用函数实现身份证合法校验 拿走不谢~ CREATE OR REPLACE FUNCTION CHECK_IDCARD(A_SFZ IN VARCHAR2) RETURN VARCHAR2 IS TYPE WEIGHT_TAB IS VARRAY(17) OF NUMBER; TYPE CHECK_TAB IS VARRAY(11) OF CHAR; WEIGHT_FACTOR WEIGHT_TAB : WEIGHT_TAB(7,9,10,5,8,4,…

3dmax的python通过普通的摄像头动捕表情

1、安装python 进入cdm&#xff0c;打python要能显示版本号 >>>&#xff08;进入python提示符模式&#xff09; import sys sys.path显示python的安装路径&#xff0c; 进入到python.exe的路径 在python目录中安装(ctrlz退出python交互模式) 2、pip install mediapipe…

国产Linux统信安装mysql8教程步骤

系统环境 uname -a Linux FlencherHU-PC 6.12.9-amd64-desktop-rolling #23.01.01.18 SMP PREEMPT_DYNAMIC Fri Jan 10 18:29:31 CST 2025 x86_64 GNU/Linux下载离线安装包 浏览器下载https://downloads.mysql.com/archives/get/p/23/file/mysql-test-8.0.33-linux-glibc2.28…

Vite 权限绕过导致任意文件读取(CVE-2025-32395)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 前言…

poi-tl

官网地址 Poi-tl Documentationword模板引擎https://deepoove.com/poi-tl github 地址 https://github.com/Sayi/poi-tl/tree/master gitcode 加速地址 GitCode - 全球开发者的开源社区,开源代码托管平台GitCode是面向全球开发者的开源社区,包括原创博客,开源代码托管,代码…

操作系统 4.1-I/O与显示器

外设工作起来 操作系统让外设工作的基本原理和过程&#xff0c;具体来说&#xff0c;它概括了以下几个关键步骤&#xff1a; 发出指令&#xff1a;操作系统通过向控制器中的寄存器发送指令来启动外设的工作。这些指令通常是通过I/O指令&#xff08;如out指令&#xff09;来实现…

琥珀扫描 2.0.5.0 | 文档处理全能助手,支持扫描、文字提取及表格识别

琥珀扫描是一款功能强大的文档处理应用程序。它不仅仅支持基本的文档扫描功能&#xff0c;还涵盖了文字提取、证件扫描、表格识别等多种实用功能。无论是学生、职员还是教师&#xff0c;都能从中找到适合自己的功能。该应用支持拍照生成电子件&#xff0c;并能自动矫正文档边缘…

jQuery UI 小部件方法调用详解

jQuery UI 小部件方法调用详解 引言 jQuery UI 是一个基于 jQuery 的用户界面和交互库,它提供了一系列小部件,如按钮、对话框、进度条等,这些小部件极大地丰富了网页的交互性和用户体验。本文将详细介绍 jQuery UI 中小部件的方法调用,帮助开发者更好地理解和应用这些小部…

浮点数比较在Eigen数学库中的处理方法

浮点数比较在Eigen数学库中的处理方法 在Eigen数学库中进行浮点数比较时&#xff0c;由于浮点数的精度问题&#xff0c;直接使用运算符通常不是推荐的做法。Eigen提供了几种更安全的方法来进行浮点数比较&#xff1a; 1. 近似相等比较 使用isApprox()函数进行近似比较&#…

Linux-----驱动

一、内核驱动与启动流程 1. Linux内核驱动 Nor Flash: 可线性访问&#xff0c;有专门的数据及地址总线&#xff08;与内存访问方式相同&#xff09;。 Nand Flash: 不可线性访问&#xff0c;访问需要控制逻辑&#xff08;软件&#xff09;。 2. Linux启动流程 ARM架构: IRAM…

Wincc脚本全部不运行

Wincc脚本全部不运行 前言解决办法操作步骤 前言 这里主要是指旧项目移植到Wincc的高版本&#xff0c;移植后界面的一些功能均会失效。&#xff08;例如脚本不执行&#xff0c;项目编辑器不可用等情况&#xff09; 解决办法 Wincc的项目文件中有Dcf文件&#xff0c;Dcf文件包…

使用numpy构建逻辑回归模型及训练流程

逻辑回归模型构建及训练流程 关于逻辑回归的数据&#xff0c;有很多学习⽤的⽰例样本。这⾥我们使⽤scikit learn提供的数据集⽣成函数来创建 具体参数可参照官网 Scikit-learn 是⽤ Python 开发的开源机器学习库&#xff0c;⼴泛⽤于数据挖掘和数据分析。 特点&#xff1a;易…

python的多线程和多进程程序编程

CPU密集型使用多进程&#xff0c;IO密集型使用多线程 查看进程ID和线程ID的命令分别是os.getpid()和threading.current_thread() 多进程使用multiprocessing就可以了&#xff0c;通常使用进程池来完成操作&#xff0c;阻塞主进程使用join方法 多线程使用threading模块&#…

代码随想录算法训练营第十五天

LeetCode题目: 654. 最大二叉树617. 合并二叉树700. 二叉搜索树中的搜索98. 验证二叉搜索树2843. 统计对称整数的数目 其他: 今日总结 往期打卡 654. 最大二叉树 跳转: 654. 最大二叉树 学习: 代码随想录公开讲解 问题: 给定一个不重复的整数数组 nums 。 最大二叉树 可以用…