算法學習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.pswp.cn/bicheng/76510.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/76510.shtml
英文地址,請注明出處:http://en.pswp.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 。 最大二叉樹 可以用…