2026《數據結構》考研復習筆記一(C++基礎知識)

C++基礎知識復習

  • 一、數據類型
  • 二、修飾符和運算符
  • 三、Lambda函數和表達式
  • 四、數學函數
  • 五、字符串
  • 六、結構體

一、數據類型

1.1基本類型

基本類型 描述 字節(位數) 范圍
char 字符類型,存儲ASCLL字符 1(8位) -128 到 127 或 0 到 255(依賴編輯器)
signed char 有符號字符 1(8位) -128 到 127
unsigned char 無符號字符 1(8位) 0到255
int 整型 4(32位) -2,147,483,648 到 2,147,483,647
unsigned int 無符號整型 4(32位) 0 到 4,294,967,295
float 單精度浮點數 4(32位) 約 ±3.4e±38(6-7 位有效數字)
double 雙精度浮點數 8(64位) 約 ±1.7e±308(15 位有效數字)

筆記:復習基本數據類型的取值范圍和計算方法
【跳轉復習總結】

1.2C++新增類型

C++11新增類型 描述 示例
auto 讓編輯器自動推斷類型
  • 簡化迭代器:auto it=vec.begin();
  • Lambda表達式:auto add=[](int a,int b){return a+b;};
auto x=10;
decltype 獲取表達式的類型
  • 模板編程:auto add(T,a,U b)->decltype(a+b){return a+b;}
  • Lambda返回類型:auto func=[](int a,double b)->decltype(a+b){return a+b;};
  • 依賴表達式類型的變量聲明:decltype(vec.size())len=vec.size();
decltype(x) y=20;
initializer_list 初始化列表類型
  • 初始化容器:vectorv={1,2,3}
  • 初始化自定義類型:MyClass(initializer)listargs){}MyClass obj={10,20,30};
  • 作為函數參數:void print(initializer_list< int>vals){}print({1,2,3});
initializer_list list = {1, 2, 3};
tuple 元組類型,存儲多個不同類型的值 tuple

筆記:復習迭代器Lambda表達式
【跳轉復習總結】

1.3派生類型

派生類型 描述 示例
數組 相同類型元素的集合 int arr[5]={1,2,3};
指針 存儲變量內存地址的類型 int* p=&x;
引用 ref和x指向同一塊地址 int & ref=x;
函數 函數類型,表示函數名 int func(int a,int b);
結構體 用戶自定義數據類型,可包含不同的類型成員 struct Piont{int x;int y;);
用戶定義的數據類型,支持封裝、繼承和多態 class MyClass{};
聯合體 多個成員共享同一塊內存 union Data{int x;float f;};
枚舉 用戶定義的整數常量集合 enum Color{RED,GREEN;};

筆記:復習函數指針結構體賦值
【跳轉復習總結】

1.4別名

別名 描述 示例
#define 文本替換(預處理器處理),不進行類型檢查 #define Myint int
typedef 類型別名(編輯器處理) typedef int Myint;
using 類型別名(編輯器處理) using Myint=int;

1.5標準庫類型

標準庫類型 描述 示例
string 字符串類型 string s="hello";
vector 動態數組 vector< int >v={1,2,3};
pair 存儲兩個值的容器 pair< int,float>p(1,2.0);
map 鍵值對容器 map< int,string>m;
set 唯一值集合 set< int>s={1,2,3};

筆記:復習mapset的區別,理解紅黑樹的原理
【跳轉復習總結】

1.6枚舉類型
enum 枚舉名{
標識符[=整型常數],
標識符[=整型常數],
……
標識符[=整型常數],
}枚舉變量;

例如enum color{red,green,blue}c;
c=blue;

默認情況下,第一個名稱為0,第二個為1,以此類推。還可以賦值enum color{red,green=5,blue};

1.7類型轉換

常量轉換 用于將const類型的對象轉換為非const類型的對象。
const int i=10;
int &r=const_cast< int&>(i);
重新解釋轉換 將一個數據類型的二進制內存表示按另一個數據類型解釋,屬于強制按位轉化
int i=10;
float f=reinterpret_cast< float&>(i);//f=1.4013e-44
靜態轉換 將一種數據類型的值強制轉換為另一種數據類型的值,通常用于類型相似的對象之間的轉換,如int轉換為float
int i=10;
float f=static_cast< float>(i);
動態轉換 用于在繼承層次結構中進行向下轉換(downcasting)的一種機制,通常用于將一個基類指針或引用轉換為派生類指針或引用

二、修飾符和運算符

2.1修飾符

const const定義常量,表示該變量的值不能被修改
static static定義靜態變量,表示該變量的作用域僅限于當前文件或當前函數內,不會被其他文件函數訪問

2.2運算符

.(點)和->(箭頭) 成員運算符用于引用類、結構和共同體的成員
& 指針運算符&返回變量的地址,例如&a給出變量的實際地址
* 指針運算符*表示解引用。指針var的值是內存地址,*var訪問該內存地址的存放內容

注:

  • 成員運算符.使用對象是對象實例,如p.name。成員運算符->使用對象是指針指向的對象(相當于先解引用再使用.),即p->name≡(*p).name
  • int *x=&y;int z=*x;其中&y表示獲取y的內存地址,指針x的值是y的內存地址;*x表示獲取x指向的內存地址的存放內容,z的值是x指向的內存地址的存放內容

三、Lambda函數和表達式

一般形式:[capture] (parameters)->return-type{body} [] (int x,int y)->int{int z=x+y;return z+x;}
特殊情況:[capture] (parameters){body}。“沒有返回值”或者“Lambda僅包含一個return語句” []{global_x++;}
[] (int x,int y){return x

在Lambda表達式內可以訪問當前作用域的變量,可以通過前面的[]指定

[] 沒有定義任何變量。使用未定義變量會引發錯誤
[x,&y] x以傳值方式傳入(默認),y以引用方式傳入
[&] 任何被使用到的外部變量都隱式地以引用方式加以引用
[=] 任何被使用到的外部變量都隱式地以傳值方式加以引用
[&,x] x顯示地以傳值方式加以引用,其余變量以引用方式加以引用
[=,&z] z顯示地以引用方式加以引用,

四、數學函數

double sqrt(double); sqrt(x)返回√x
double pow(double,double); pow(x,y)返回xy
double floor(double); 向下取整(小于或等于參數的最大整數)
double ceil(double); 向上取整(大于或等于參數的最小函數)
int rand(); 隨機數函數,通常與srand()time()函數搭配
srand((unsigned)time(NULL));//void srand(unsigned int seed);
int r=rand();

五、字符串

5.1C字符串

strcpy(s1,s2); 復制字符串s2到字符串s1
strcat(s1,s2); 連接字符串s2到字符串s1的末尾
strlen(s1); 返回字符串s1的長度
strcmp(s1,s2); if(s1==s2)return 0;
else if(s1 < s2)return -1;
else return 1;
strchr(s1,ch); 返回一個指針,指向字符串s1中字符ch第一次出現的位置
strstr(s1,s2); 返回一個指針,指向字符串s1中字符串s2第一次出現的位置

5.2C++的string類

str1=str2; 復制字符串s2到字符串s1
str3=str1+str2; 連接字符串s2到字符串s1的末尾
str1.size(); 返回字符串s1的長度

六、結構體

6.1定義處命名
struct type_name{
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
}object_names;

注釋:type_name是結構體類型名,object_names是結構體變量名。結構體成員訪問運算符(.),如a.name

6.2typedef關鍵字
typedef struct Books{
char title[50];
char author[50];
char subject[100];
int book_id;
}Books;
為Book{…}結構體取別名Books,可以用Books來定義Book類型的變量而不需要struct關鍵字,如Books book1;

復習總結

  1. 復習基本數據類型的取值范圍和計算方法(計算機組成原理)
  2. 復習迭代器和Lambda表達式(leetcode)
  3. 復習函數指針、結構體和
  4. 復習mapset的區別,理解紅黑樹的原理

后記:關于C++的高級教程和重點知識點代碼以后可能會繼續出,目前只總結基礎知識點,前面內容總結自【菜鳥教程】,筆記只摘錄了本人的疑難雜癥,若有更多問題可以訪問該網站,同時歡迎大家指正和批判文章中的內容,如果有格式上的優化建議也歡迎評論

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76020.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76020.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76020.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于骨骼識別的危險動作報警分析系統

基于骨骼識別的危險動作報警分析系統 【包含內容】 【一】項目提供完整源代碼及詳細注釋 【二】系統設計思路與實現說明 【三】基于骨骼識別算法的實時危險行為預警方案 【技術棧】 ①&#xff1a;系統環境&#xff1a;Windows 10/11、macOS Ventura、Ubuntu 20.04 ②&#x…

【雙指針】四數之和(medium)

四數之和&#xff08;medium&#xff09; 題?描述&#xff1a;解法&#xff08;排序 雙指針&#xff09;算法思路&#xff1a; C 算法代碼&#xff1a;Java 算法代碼&#xff1a; 題?鏈接&#xff1a;18. 四數之和 題?描述&#xff1a; 給你?個由 n 個整數組成的數組 num…

Flask+Influxdb+grafna構建電腦性能實時監控系統

Influx下載地址&#xff0c;這里下載了以下版本influxdb-1.8.5_windows_amd64.zip 運行前需要先啟動Influx數據庫&#xff1a; 管理員方式運行cmd->F:->cd F:\influxdb\influxdb-1.8.5-1->influxd -config influxdb.conf&#xff0c;以influxdb.conf配置文件啟動數…

如何在Keil中配置國民技術N32G系列MCU開發環境

如何在Keil及Jlink中搭建國民技術N32G系列MCU開發環境 根據自己的MCU型號&#xff08;我這里的型號是N32G452REL7&#xff09;訪問國民技術官網&#xff0c;依次從N32G通用MCU-技術資源-固件和軟件-軟件開發套件&#xff0c;獲取對應MCU型號的SDK&#xff0c;也可點擊這里從網盤…

微軟承認Win11出現極端錯誤,只能強制關機或重裝系統

最近&#xff0c;不少使用 Windows 11 的用戶反映&#xff0c;在系統更新后&#xff0c;“Windows Hello”突然失效&#xff0c;原本便捷的人臉識別和PIN登錄功能統統無法使用。更糟的是&#xff0c;有人在重置系統后直接被擋在系統門外&#xff0c;這讓人不禁發問&#xff1a;…

【android bluetooth 協議分析 02】【bluetooth hal 層詳解 1】【uart 介紹】

一、什么是 UART&#xff1f; UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09; 是一種 串行通信協議&#xff0c;它的特點是通信時不需要專門的時鐘信號&#xff08;叫做“異步”通信&#xff09;&#xff0c;常用于兩個設備之間的簡單數據通信&…

天元證券|奶粉行業結構性回暖 乳企競速全齡化、國際化

在過去幾年中&#xff0c;中國嬰配粉市場經歷了量價齊增&#xff0c;量減價增&#xff0c;量減價減的三個周期。歷經多年行業深度洗牌與競爭格局重塑&#xff0c;2024年中國嬰配粉市場回暖態勢愈發清晰可辨。 日前&#xff0c;包括中國飛鶴、澳優、健合集團在內的多家奶粉股披露…

第3.1節 調用鏈路分析簡介

調用鏈路&#xff08;Call Chain / Call Path&#xff09; 是程序在執行過程中&#xff0c;按照調用順序形成的函數、模塊或組件之間的依賴關系鏈條&#xff0c;完整記錄了從程序入口到當前執行點的動態調用路徑。它反映了代碼執行的邏輯流程&#xff0c;是分析程序行為、調試問…

System.Security.Cryptography.CryptographicException“填充無效,無法被移除。”

這個異常通常發生在以下幾種情況&#xff1a; 1.密文損壞&#xff1a;密文在傳輸或存儲過程中被篡改或損壞。 2.密鑰不匹配&#xff1a;用于解密的密鑰與加密時使用的密鑰不同。 3.填充模式不匹配&#xff1a;加密時使用的填充模式與解密時指定的填充模式不一致。 4.使用了不正…

【網絡入侵檢測】Suricata之數據包內容匹配

【作者主頁】只道當時是尋常 【專欄介紹】入侵檢測。專注網絡、主機安全&#xff0c;歡迎關注與評論。 1. 概要 本文詳細介紹了網絡入侵檢測系統&#xff08;如 Suricata&#xff09;中用于檢查數據包或流有效載荷的 Payload 關鍵字。content 用于匹配數據包內容&#xff0c;默…

Spring Boot 整合 Redis 實現點贊功能:從基礎到實踐

在當今互聯網應用開發中&#xff0c;點贊功能幾乎成為了各類內容平臺的標配。它不僅能增加用戶與內容之間的互動&#xff0c;還能直觀地反映內容的受歡迎程度。本文將詳細介紹如何使用 Spring Boot 整合 Redis 來實現一個簡單的文章點贊功能&#xff0c;讓你輕松掌握這一實用技…

openGauss DataVec + Dify,快速搭建你的智能助手平臺

在當今數字化和智能化的時代&#xff0c;大語言模型&#xff08;LLM&#xff09;的應用正以前所未有的速度改變著各個領域的工作方式和用戶體驗。Dify 作為一個開源的大語言模型應用開發平臺&#xff0c;為開發者們提供了便捷且強大的工具&#xff0c;助力構建從基礎智能體到復…

OpenLayers:extent與view extent 介紹

一、范圍的概念 1.什么是范圍&#xff1f; 在Openlayers中范圍&#xff08;Extent&#xff09;是用于表示地理空間區域的一種概念。它通常由一個數字數組構成&#xff0c;數組中的內容為&#xff1a;[最小x坐標&#xff0c;最小y坐標&#xff0c;最大x坐標&#xff0c;最大y坐…

can‘t set boot order in virtualbox

Boot order setting is ignored if UEFI is enabled https://forums.virtualbox.org/viewtopic.php?t99121 如果勾選EFI boot order就是灰色的 傳統BIOS就是可選的 然后選中任意介質&#xff0c;通過右邊的上下箭頭調節順序&#xff0c;最上面的應該是優先級最高的 然后就…

如何在 Kali 上解決使用 evil-winrm 時 Ruby Reline 的 quoting_detection_proc 警告

在使用 Kali Linux 運行 Ruby 工具&#xff08;例如 evil-winrm&#xff09;時&#xff0c;你可能會遇到以下警告&#xff1a; Warning: Remote path completions is disabled due to ruby limitation: undefined method quoting_detection_proc for module Reline這個警告會導…

工資管理系統的主要功能有哪些

工資管理系統通過自動化薪資計算、稅務處理、員工數據管理、報表生成等功能&#xff0c;極大地提升了薪資發放的效率和準確性。在傳統的人工薪資管理中&#xff0c;HR人員需要手動計算每位員工的薪資&#xff0c;并確保符合稅務要求&#xff0c;極易出錯且耗時。而現代工資管理…

C++語言程序設計——02 變量與數據類型

目錄 一、變量與數據類型&#xff08;一&#xff09;變量的數據類型&#xff08;二&#xff09;變量命名規則&#xff08;三&#xff09;定義變量&#xff08;四&#xff09;變量賦值&#xff08;五&#xff09;查看數據類型&#xff08;六&#xff09;數據類型的字節長度&…

咋用fliki的AI生成各類視頻?AI生成視頻教程

最近想制作視頻&#xff0c;多方考查了決定用fliki&#xff0c;于是訂閱了一年試試&#xff0c;這個AI生成的視頻效果來看真是不錯&#xff0c;感興趣的自己官網注冊個賬號體驗一下就知道了。 fliki官網 Fliki生成視頻教程 創建賬戶并登錄 首先&#xff0c;訪問fliki官網并注…

文章記單詞 | 第32篇(六級)

一&#xff0c;單詞釋義 inferior [?n?f??ri?(r)] adj. 較差的&#xff1b;次的&#xff1b;下級的&#xff1b;n. 下屬&#xff1b;次品joy [d???] n. 歡樂&#xff1b;喜悅&#xff1b;樂趣&#xff1b;樂事&#xff1b;v. 因… 而高興resemble [r??zembl] vt. 類…

windows上安裝Jenkins

1. 下載windows版 jenkins安裝包 2. 配置本地安全策略 在 Windows 11/10 上打開本地安全策略。 Secpol.msc 或本地安全策略編輯器是一個 Windows 管理工具&#xff0c;允許您在本地計算機上配置和管理與安全相關的策略。 安全設置-》本地策略-》用戶權限分配-》作為服務登錄…