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

算法学习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^5
	cout<<a<<endl; // 100000
	return 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); //2
	cout<< n <<endl; 
	
	n = s.find(str,n+1); //14
	cout<< 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去重函数

在这里插入图片描述

相关文章:

  • CentOS7更换国内YUM源和Docker简单应用
  • 【创建一个YOLO免环境训练包】
  • 入侵检测snort功能概述
  • Java基础 - 泛型(基本概念)
  • 【25软考网工笔记】第二章 数据通信基础(1)信道特性 奈奎斯特 香农定理
  • 使用amos进行简单中介效应分析
  • MySQL 进阶 - 2 ( 9000 字详解)
  • Next.js 简介
  • 自行搭建一个Git仓库托管平台
  • NLP高频面试题(四十一)——什么是 IA3 微调?
  • 国家优青ppt美化_青年科学基金项目B类ppt案例模板
  • 【WPF】自定义控件:ShellEditControl-同列单元格编辑支持文本框、下拉框和弹窗
  • 【解决方案】vscode 不小心打开了列选择模式,选择时只能选中同一列的数据。
  • 【学习笔记】头文件中定义函数出现重复定义报错
  • 5G_WiFi_CE_DFS
  • 嵌入式---电机分类
  • 用流量和用wifi的ip地址一样吗?深度解读
  • 深入解析 KaiwuDB 源码:架构设计与核心模块实现
  • SQL注入攻击样例数据参考(全场景分类解析)
  • 一组可能的机器学习问题列表
  • 设计说明室内设计/seo推广软件排名
  • 徐汇区b2b"b2c行业门户网站开发_电子商业门户网站建设/友情链接交换的意义是什么
  • 北京网站设计公司yy成都柚米科技15/怎么制作网页广告
  • 阿里云网站建设基本流程/线上网络平台推广
  • 男女做暧暧试看网站/站长seo推广
  • html5建设摄影网站意义/平原县网站seo优化排名