數學系C++ 類與對象 STL(九)

目錄

目錄

面向對象:py,c艸,Java都是,但c是面向過程

特征:

對象

內斂成員函數【是啥】:

構造函數和析構函數

構造函數

復制構造函數/拷貝構造函數:

?【……】 實參與形參的傳遞方式:值傳遞,引用傳遞,地址傳遞【帶擴充】

匿名對象

析構函數

STL

? 順序容器/序列容器(Sequential Containers)

關聯容器(Associative Containers)按排序方式存儲數據,就像詞典一樣 ? 方便搜索

容器適配器(Associative adapters)(棧,隊,優先隊列)

對容器的算法

容器的成員函數



面向對象:py,c艸,Java都是,但c是面向過程

特征:

抽象、封裝、繼承、多態

繼承機制:

允許程序員在保持原有類特性的基礎上,進行更具體、更詳細的說明。

多態:

同一段程序能處理多種類型對象。在 C++ 中,多態有強制多態(如類型轉換)、重載多態(如函數重載、運算符重載)、類型參數化和虛函數、模板等。

對象

成員函數既可以訪問目的對象的私有成員,也可以訪問所在類的其它對象的私有成員。

內斂成員函數【是啥】:

使用內聯函數可以減少調用開銷,提高效率,但只適合相當簡單的函數。

構造函數和析構函數

構造函數:負責對象初始化。

析構函數:在對象被釋放時自動調用的函數。

構造函數與析構函數是兩類特殊的成員函數,每個類都有。

構造函數

class Clock{public:Clock(int x, int y, int z); // 構造函數
void SetTime(int h=0, int m=0, int s=0);void ShowTime();private:int hour, minute, second;};
// 構造函數的定義
Clock::Clock(int x, int y, int z){ hour=x; minute=y; second=z; }

注意:構造函數前不能加數據類型或 void!

復制構造函數/拷貝構造函數:

一類特殊的構造函數,將已有對象的指復制給其它對象

例:自定義復制構造函數:

Point::Point(Point & p) // 復制構造函數的定義
{x=p.x; y=p.y;cout << "自定義復制構造函數被調用!" << endl;}.

默認的復制構造函數何時調用?用=賦值時

int main()
{Point A(1,2);
Point B(A); // 用 A 初始化 B,自定義復制構造函數被調用
Point C=A; // 與上面語句完全一樣
Point D;
D=A; // 賦值,默認復制構造函數被調用!
cout << B.getx() << endl;return 0;}

?對象可以作為成員函數和非成員函數的參數

?【……】 實參與形參的傳遞方式:值傳遞,引用傳遞,地址傳遞【帶擴充】
匿名對象

非匿名對象構造函數缺省的話不要小括號

Clock c2; // OK,全部使用缺省值時不要加小括號!
Clock c2(); // ERROR

?匿名對象要

析構函數

? 析構函數的函數名由類名前加“~”組成

? 析構函數沒有返回值

? 析構函數在對象生存期即將結束時被自動調用

? 析構函數不接收任何參數

? 若沒有自定義析構函數,系統會自動生成一個缺省析構函數(函數體為空,如:~Point() { } )

————————————————————以上為第九講

STL

? 順序容器/序列容器(Sequential Containers)

array 數組,長度不能改變

vector 只能在最后面插入或刪除數據

deque 與 vector 類似,但允許在最前面插入或刪除數據

list 雙向鏈表,可在任意位置插入或刪除數據f

orward_list 與 list 類似,但是單向的,只能沿一個方向訪問

string 字符串,與 vector 類似,但存儲的是字符

關聯容器(Associative Containers)按排序方式存儲數據,就像詞典一樣 ? 方便搜索

set 存儲互不相同的數據,插入數據時進行排列

unordered_set 與 set 類似,但按 Hash 值排序

map 存儲“鍵-值”對,按唯一的鍵排序

unordered_map 與 map 類似,但按“鍵”的 Hash 值排序

muti:

multiset 與 set 類似,但允許有相同的數據

unordered_multiset 與 unordered_set 類似,但允許有相同的數據

multimap 與 map 類似,但不要求“鍵”唯一

unordered_multimap 與 unordered_map 類似,但不要求“鍵”唯一

容器適配器(Associative adapters)(棧,隊,優先隊列)

順序適配器和關聯適配器的變種,增加一些特殊功能

stack 棧,按后進先出(LIFO)方式存儲數據

queue 隊列,按先進先出(FIFO)方式存儲數據

priority_queue 隊列,但能保證最大元素總在最前

對容器的算法

find 查找指定的值

find_if 根據條件查找

reverse 反轉

remove_if 根據條件刪除相應的數據

transform 根據用戶給定的方法對數據進行交換

容器的成員函數

begin() 返回開始迭代器end() 返回結束迭代器

size() 返回實際元素個數

capacity() 返回當前容量

empty() 判斷是否為空

max_size() 返回元素個數的最大值

front() 返回第一個元素的引用

back() 返回最后一個元素的引用

push_back() 在序列的尾部添加一個元素

pop_back() 移出序列尾部的元素

clear() 移出所有的元素,容器大小變為 0

resize() 改變實際元素的個數

at() 使用索引訪問元素,會進行邊界檢查

assign() 用新元素替換原有內容

insert() 在指定的位置插入一個或多個元素

erase() 移出一個元素或一段元素

swap() 交換兩個容器的所有元素

data() 返回包含元素的內部數組的指針【?】

sort() 對元素進行排序

這里僅列出部分成員函數。? 并非所有容器都具有這些成員函數。? 容器不僅使用方便,而且效率也非常高,可代替數組。? 優先使用 vector 和 string

————————————————————————以上為第16講

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

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

相關文章

Node.js Stream

Node.js Stream Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環境&#xff0c;它允許開發者使用 JavaScript 編寫服務器端代碼。Node.js 的一個核心特性是其對流&#xff08;Stream&#xff09;的處理能力。流是一種在 Node.js 中處理讀/寫文件、網絡通信或任何端到端…

【LeetCode】螺旋矩陣

目錄 一、題目二、解法完整代碼 一、題目 給你一個 m 行 n 列的矩陣 matrix &#xff0c;請按照 順時針螺旋順序 &#xff0c;返回矩陣中的所有元素。 示例 1&#xff1a; 輸入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 輸出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&…

go-redis 封裝事件-client封裝模型、批量數據處理的導出器設計

一、redis-go的封裝實踐-client模型 // Copyright 2020 Lingfei Kong <colin404foxmail.com>. All rights reserved. // Use of this source code is governed by a MIT style // license that can be found in the LICENSE file.package storageimport ("context&q…

MySQL性能優化 二、表結構設計優化

1.設計中間表 設計中間表&#xff0c;一般針對于統計分析功能&#xff0c;或者實時性不高的需求。 2.設計冗余字段 為減少關聯查詢&#xff0c;創建合理的冗余字段&#xff08;創建冗余字段還需要注意數據一致性問題&#xff09; 3.折表 對于字段太多的大表&#xff0c;考…

C++ STL容器:序列式容器-鏈list,forward_list

摘要&#xff1a; CC STL&#xff08;Standard Template Library&#xff0c;標準模板庫&#xff09;在C編程中的重要性不容忽視&#xff0c;STL提供了一系列容器、迭代器、算法和函數對象&#xff0c;這些組件極大地提高了C程序的開發效率和代碼質量。 STL 容器 分為 2 大類 …

Halcon 銑刀刀口破損缺陷檢測

一 OTSU OTSU&#xff0c;是一種自適應閾值確定的方法,又叫大津法&#xff0c;簡稱OTSU&#xff0c;是一種基于全局的二值化算法,它是根據圖像的灰度特性,將圖像分為前景和背景兩個部分。當取最佳閾值時&#xff0c;兩部分之間的差別應該是最大的&#xff0c;在OTSU算法中所采…

排序 -- 萬能測試oj

. - 力扣&#xff08;LeetCode&#xff09; 這道題我們可以使用我們學過的那些常見的排序方法來進行解答 //插入排序 void InsertSort(int* nums, int n) {for (int i 0; i < n-1; i){int end i;int tmp nums[end 1];while (end > 0){if (tmp < nums[end]){nums[…

PyVideoTrans:一款功能全面的視頻翻譯配音工具!【送源碼】

PyVideoTrans是一款功能全面的視頻翻譯配音工具&#xff0c;專為視頻內容創作者設計。它能夠將視頻中的語言翻譯成另一種語言&#xff0c;并自動生成與之匹配的字幕和配音。支持多種語言&#xff0c;包括但不限于中文&#xff08;簡繁體&#xff09;、英語、韓語、日語、俄語、…

10、廣告-用戶數據中心

用戶數據中心 用戶數據中心在程序化廣告中扮演著至關重要的角色&#xff0c;它主要包括DMP原理、用戶畫像邏輯、Look Alike原理和DMP對接DSP四個部分。下面&#xff0c;我們將詳細講解每個部分的內容。 &#xff08;一&#xff09;DMP原理 數據管理平臺&#xff08;Data Man…

Wormhole Filters: Caching Your Hash on Persistent Memory——泛讀筆記

EuroSys 2024 Paper 論文閱讀筆記整理 問題 近似成員關系查詢&#xff08;AMQ&#xff09;數據結構可以高效地近似確定元素是否在集合中&#xff0c;例如Bloom濾波器[10]、cuckoo濾波器[23]、quotient濾波器[8]及其變體。但AMQ數據結構的內存消耗隨著數據規模的增長而快速增長…

MSPM0G3507——串口0從數據線傳輸變為IO口傳輸

默認的跳線帽時這樣的&#xff0c;這樣時是數據線傳輸 需要改成這樣&#xff0c;即可用IO口進行數據傳輸

windows系統本地端口被占用的問題

第一步&#xff1a;查找所有運行的端口 按住“WindowsR”組合鍵&#xff0c;打開命令窗口&#xff0c;輸入【cmd】命令&#xff0c;回車。在彈出的窗口中輸入 命令【netstat -ano】&#xff0c;再按一下回車鍵 Win系統端口被占用-查找所有運行的端口 第二步&#xff1a;查看…

opencv_C++學習筆記(入門30講)

文章目錄 1.配置開發環境2.圖像讀取與顯示3.圖像色彩空間轉換4.圖像對象的創建與賦值5.圖像像素的讀寫操作6.圖像像素的算數操作7.滾動條-調整圖像亮度8.滾動條-調整對比度和亮度9.鍵盤響應操作10.圖像像素的邏輯操作11.圖像的通道分離和合并12.圖像色彩空間轉換13.圖像的像素值…

阿里云存儲的降本增效與運維

小浩負責公司存儲架構層&#xff0c;需要確保存儲層不會成為公司業務系統的性能瓶頸&#xff0c;讓數據讀寫達到最佳性能。那么小浩可以從哪些方面著手優化性能呢&#xff1f;他繼續求助系統架構師大雷。 小浩&#xff1a;雷哥&#xff0c;PD反饋公司系統最近響應很慢&#xff…

HTTP模塊(一)

HTTP服務 本小節主要講解HTTP服務如何創建服務&#xff0c;查看HTTP請求&響應報文&#xff0c;還有注意事項說明&#xff0c;另外講解本地環境&Node環境&瀏覽器之間的鏈路圖示&#xff0c;如何提取HTTP報文字符串&#xff0c;及報錯信息查詢。 創建HTTP服務端 c…

lspci

【原】Linux之PCIE三種空間解析 PCIe學習筆記——2.PCIe配置空間 PCIE學習&#xff08;2&#xff09;PCIE配置空間詳解 開發者分享 | 使用 lspci 和 setpci 調試 PCIe 問題 b : 字節 w&#xff1a;word L&#xff1a; 4byte

LLM - 詞表示和語言模型

一. 詞的相似度表示 (1): 用一系列與該詞相關的詞來表示 (2): 把每個詞表示一個獨立的符號(one hot) (3): 利用該詞上下文的詞來表示該詞 (3): 建立一個低維度的向量空間&#xff0c;用深度學習方法將該詞映射到這個空間里(Word Embedding) 二&#xff1a;語言模型 (1): 根…

Postman中數據文件的高效使用:測試自動化與數據驅動測試實踐

摘要 Postman 是一個強大的 API 開發工具&#xff0c;它不僅支持 API 的設計、開發和測試&#xff0c;還提供了數據驅動測試的功能。通過使用數據文件&#xff0c;我們可以模擬不同的測試場景&#xff0c;實現測試的自動化和重復執行。本文將詳細介紹如何在 Postman 中使用數據…

PHP-實例-CSRF

1 需求 按照用途分類&#xff1a; 會話&#xff08;會話ID和會話令牌 二選一&#xff09; 會話ID&#xff1a;服務器側自動生成&#xff0c;自動存儲在cookie中&#xff0c;需要在服務器側存儲會話令牌&#xff1a;服務器側手動生成&#xff0c;手動存儲在cookie中&#xff0…

7月07日,每日信息差

第一、6 月份&#xff0c;北京、上海、廣州和深圳的新建商品住宅成交量分別環比增加 21%、66%、48% 和 38%&#xff0c;均創年內新高 第二、2024 年世界人工智能大會上&#xff0c;上海向四家企業發放了首批無駕駛人智能網聯汽車示范應用許可&#xff0c;這些企業可以在浦東部…