C++ 模板類的示例-數組

類模板可以有非通用類型參數:1)通常是整型(C++20標準可以用其它的類型);2)實例化模板時必須用常量表達式;3)模板中不能修改參數的值;4)可以為非通用類型參數提供默認值。
優點:在棧上分配內存,易維護,執行速度快,合適小型數組。
缺點:在程序中,不同的非通用類型參數將導致編譯器生成不同的類。
構造函數的方法更通用,因為數據的大小是類的成員(而不是硬編碼),可以創建數組大小可變的類。

#include <iostream>         // 包含頭文件。
using namespace std;        // 指定缺省的命名空間。template <class T,int len=10>
class Array
{
private:T items[len];      // 數組元素。
public:Array()    {}    	   // 默認構造函數。~Array() {}         // 析構函數T& operator[](int ii) { return items[ii]; }  // 重載操作符[],可以修改數組中的元素。const T& operator[](int ii) const { return items[ii]; }  // 重載操作符[],不能修改數組中的元素。
};template <class T>
class Vector
{
private:int len;               // 數組元素的個數。T*  items;           // 數組元素。
public:// 默認構造函數,分配內存。Vector(int size=10):len(size) {items = new T[len];}~Vector() {         // 析構函數delete[] items; items = nullptr;}void resize(int size) {         // 護展數組的內存空間。if (size <= len) return;   // 只能往更大擴展。T* tmp = new T[size];   // 分配更大的內存空間。for (int ii = 0; ii < len; ii++) tmp[ii] = items[ii];     // 把原來數組中的元素復制到新數組。delete[] items;    // 釋放原來的數組。items = tmp;      // 讓數組指針指向新數組。len = size;           // 擴展后的數組長度。}int size() const { return len; }     // 獲取數組長度。T& operator[](int ii) {   // 重載操作符[],可以修改數組中的元素。if (ii >= len) resize(ii + 1);    // 擴展數組。return items[ii]; }const T& operator[](int ii) const { return items[ii]; }  // 重載操作符[],不能修改數組中的元素。
};int main()
{// Array<string,10> aa;  // 創建模板類Array的對象。Vector<int> aa(1);     // 創建模板類Vector的對象。aa[0] = 5; aa[1] = 8; aa[2] = 3; aa[3] = 2; aa[4] = 7; // aa[0] = "西施"; aa[1] = "冰冰"; aa[2] = "冪冪"; aa[3] = "金蓮"; aa[4] = "小喬";for (int ii=0; ii<5;ii++) cout << "aa[" << ii << "]=" << aa[ii] << endl;
}

推薦一個零聲學院項目課,個人覺得老師講得不錯,分享給大家:
零聲白金學習卡(含基礎架構/高性能存儲/golang云原生/音視頻/Linux內核)
https://xxetb.xet.tech/s/3Zqhgt

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

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

相關文章

Android中使用performClick觸發點擊事件

Android中使用performClick觸發點擊事件 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將探討在Android開發中如何使用 performClick() 方法來觸發點擊…

數據庫-python SQLite3

數據庫-python SQLite3 一&#xff1a;sqlite3 簡介二: sqlite3 流程1> demo2> sqlite3 流程 三&#xff1a;sqlite3 step1> create table2> insert into3> update4> select1. fetchall()2. fetchone()3. fetchmany() 5> delete6> other step 四&#…

Spark join數據傾斜調優

Spark中常見的兩種數據傾斜現象如下 stage部分task執行特別慢 一般情況下是某個task處理的數據量遠大于其他task處理的數據量&#xff0c;當然也不排除是程序代碼沒有冗余&#xff0c;異常數據導致程序運行異常。 作業重試多次某幾個task總會失敗 常見的退出碼143、53、137…

【電路筆記】-放大器類型

放大器類型 文章目錄 放大器類型1、概述2、關于偏置的注意事項3、A類(Class A)放大器4、B類(Class B)放大器5、AB類(Class AB)放大器6、C類(Class C)放大器7、總結1、概述 放大器通常根據輸出級的結構進行分類。 事實上,功率放大確實發生在該階段,因此輸出信號的質量和…

Arduino (esp ) 下String的內存釋放

在個人的開源項目 GitHub - StarCompute/tftziku: 這是一個通過單片機在各種屏幕上顯示中文的解決方案 中為了方便快速檢索使用了string&#xff0c;于是這個string在esp8266中占了40多k,原本以為當string設置為""的時候這個40k就可以回收&#xff0c;結果發覺不行…

【JS異步編程】async/await——用同步代碼寫異步

歷史小劇場 懂得暴力的人&#xff0c;是強壯的&#xff1b;懂得克制暴力的人&#xff0c;才是強大的。----《明朝那些事兒》 什么是 async/await async: 聲明一個異步函數 自動將常規函數轉換成Promise&#xff0c;返回值也是一個Promise對象&#xff1b;只有async函數內部的異…

Java SE入門及基礎(59) 線程的實現(上) 線程的創建方式 線程內存模型 線程安全

目錄 線程&#xff08;上&#xff09; 1. 線程的創建方式 Thread類常用構造方法 Thread類常用成員方法 Thread類常用靜態方法 示例 總結 2. 線程內存模型 3.線程安全 案例 代碼實現 執行結果 線程&#xff08;上&#xff09; 1. 線程的創建方式 An application t…

利用 Docker 簡化 Nacos 部署:快速搭建 Nacos 服務

利用 Docker 簡化 Nacos 部署&#xff1a;快速搭建 Nacos 服務 引言 在微服務架構中&#xff0c;服務注冊與發現是確保服務間通信順暢的關鍵組件。Nacos&#xff08;Dynamic Naming and Configuration Service&#xff09;作為阿里巴巴開源的一個服務發現和配置管理平臺&…

任務調度器——任務切換

一、開啟任務調度器 函數原型&#xff1a; void vTaskStartScheduler( void ) 作用&#xff1a;用于啟動任務調度器&#xff0c;任務調度器啟動后&#xff0c; FreeRTOS 便會開始進行任務調度 內部實現機制&#xff08;以動態創建為例&#xff09;&#xff1a; &#xff0…

Linux 安裝、配置Tomcat 的HTTPS

Linux 安裝 、配置Tomcat的HTTPS 安裝Tomcat 這里選擇的是 tomcat 10.X ,需要Java 11及更高版本 下載頁 ->Binary Distributions ->Core->選擇 tar.gz包 下載、上傳到內網服務器 /opt 目錄tar -xzf 解壓將解壓的根目錄改名為 tomat-10 并移動到 /opt 下, 形成個人…

測評推薦:企業管理u盤的軟件有哪些?

U盤作為一種便攜的存儲設備&#xff0c;方便易用&#xff0c;被廣泛應用于企業辦公、個人學習及日常工作中。然而&#xff0c;U盤的使用也帶來了數據泄露、病毒傳播等安全隱患。為了解決這些問題&#xff0c;企業管理U盤的軟件應運而生。 本文將對市面上流行的幾款U盤管理軟件…

Hadoop3:Yarn容量調度器配置多隊列案例

一、情景描述 需求1&#xff1a; default隊列占總內存的40%&#xff0c;最大資源容量占總資源60%&#xff0c;hive隊列占總內存的60%&#xff0c;最大資源容量占總資源80%。 二、多隊列優點 &#xff08;1&#xff09;因為擔心員工不小心&#xff0c;寫遞歸死循環代碼&#…

數據處理:四選一、四關聯

今天去面試&#xff0c;面試官們給我一個‘選擇’&#xff0c;有四個選項&#xff1a;‘展示你的才華’、‘展示你的美貌’、‘展示你的才華與美貌’、‘都不展示’ {label: “選擇”,children: [{label: “展示你的才華”,children: [],isShow: talentModal,click: () > {i…

電路筆記(電源模塊): 基于FT2232HL實現的jtag下載器硬件+jtag的通信引腳說明

JTAG接口說明 JTAG 接口根據需求可以選擇20針或14針的配置&#xff0c;具體選擇取決于應用場景和需要連接的功能。比如之前的可編程邏輯器件XC9572XL使用JTAG引腳&#xff08;TCK、TDI、TDO、TMS、VREF、GND&#xff09;用于與器件進行調試和編程通信。更詳細的內容可以閱讀11…

51單片機STC8H8K64U通過RA8889/RA8876如何控制彩屏(SPI源碼下載)

【硬件部份】 一、硬件連接實物&#xff1a; STC8H系列單片機不需要外部晶振和外部復位&#xff0c;在相同的工作頻率下&#xff0c;速度比傳統的8051單片機要快12倍&#xff0c;具有高可靠抗干擾的優秀特性&#xff0c;與瑞佑的RA8889/RA8876控制芯片剛好可以完美搭配用于工…

redis實戰-緩存雪崩問題及解決方案

定義理解 緩存雪崩是指在同一時間段&#xff0c;大量緩存的key同時失效&#xff0c;或者Redis服務宕機&#xff0c;導致大量請求到達數據庫&#xff0c;帶來巨大壓力 和緩存擊穿的區別&#xff1a; 緩存雪崩是由于緩存中的大量數據同時失效或緩存服務器故障引起的&#xff1b…

(漏洞檢查項) | 服務端請求偽造 SSRF

(漏洞檢查項)|服務端請求偽造 SSRF 漏洞場景 服務端請求偽造&#xff08;SSRF&#xff0c;Server-Side Request Forgery&#xff09;漏洞發生在應用程序允許攻擊者通過構造惡意請求&#xff0c;利用服務器端發起HTTP請求&#xff0c;并訪問內部資源或進行其他未授權操作。 漏…

css_20_定位

相對定位 設置相對定位 給元素設置 position: relative 即可實現相對定位。 可以使用 left、right、top 、 bottom 四個屬性調整位置。 相對定位的參考點是相對自己原來的位置相對定位的特點&#xff1a; 1&#xff0e;不會脫離文檔流&#xff0c;元素位置的變化&#xff0c;只…

機器學習周記(第四十五周:Graphformer)2024.6.24~2024.6.30

目錄 摘要ABSTRACT1 論文信息1.1 論文標題1.2 論文摘要1.3 論文引言1.4 論文貢獻 2 論文模型2.1 問題定義2.2 模型架構2.2.1 自注意下采樣模塊&#xff08;Self-attention down-sampling module&#xff09;2.2.2 稀疏圖自注意力機制&#xff08;Sparse graph self-attention m…

python自動移除excel文件密碼(小工具)

安裝 msoffcrypto-tool 使用pip命令安裝: 打開命令行工具&#xff08;如終端、命令提示符或Powershell&#xff09;&#xff0c;然后輸入以下命令來安裝msoffcrypto-tool&#xff1a; pip install msoffcrypto-tool庫&#xff0c;進行自動移除excel文件密碼 import msoffcrypt…