C++day9

思維導圖

?

牛客練習

?練習:

將我們寫的 myList 迭代器里面 operator[] 和 operator++ 配合異常再寫一遍

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>using namespace std;// 該作業要求各位寫一個鏈表
// 所以myList累里面需要一個真正正正的鏈表template <class T>
class myList{
public:struct Node{T val;Node* next;Node* prev;};class iterator{private:Node* p;public:iterator(Node* p=NULL):p(p){};T& operator*(){return p->val;}bool operator!=(const iterator& r){return p!=r.p;}iterator& operator++(int){p=p->next;return *this;}iterator& operator++(){p=p->next;return *this;}};myList();void push_back(const T& val);myList& operator<<(const T& val);T& operator[](int index);int size();iterator begin();iterator end();
private:Node* head; //真正的鏈表(鏈表頭頭節點)Node* tail; // 鏈表尾節點int count;
};template <typename T>
typename myList<T>::iterator myList<T>::begin()
{iterator it(head->next);return it;
}template <typename T>
typename myList<T>::iterator myList<T>::end()
{iterator it(tail->next);return it;
}
template <typename T>
myList<T>::myList(){head = new Node;head->next = NULL;head->prev = NULL;tail = head; // 只有頭節點的情況下,尾節點即使頭節點count = 0;
}template <typename T>
void myList<T>::push_back(const T& val){Node* newnode = new Node;newnode->val = val;newnode->next = NULL;newnode->prev = tail;tail->next = newnode;tail = newnode;count ++;
}template <typename T>
myList<T>& myList<T>::operator<<(const T& val){push_back(val);// return 0return *this;
}template <typename T>
T& myList<T>::operator[](int index){Node* p = head->next;try{for(int i=0;i<index;i++){p = p->next;if(p==head){cout<<"error"<<endl;break;}}throw bad_alloc();}catch(const bad_alloc& e){                                             cerr<<e.what()<<endl;}return p->val;
}template <typename T>
int myList<T>::size(){return count;
}int main(int argc,const char** argv){myList<int> l;l << 1 << 3 << 5 << 7 << 9;myList<int>::iterator it=l.begin();for(it;it!=l.end();it++){cout<<*it<<"";}cout<<endl;for(auto ele:l){cout<<ele<<"";}cout<<endl;cout<<l[5]<<endl;return 0;
}

實現效果: myList<int> l; l << 1 << 3 << 5 << 7 << 9 總共5個數 如果此時,執行了 l[0 ~ 4] 正常,如果執行了 l[5~n] 自動拋出異常 也就是說,我們需要在 operator[] 函數里面,判斷傳入的下標是否合法,是否在范圍內,如果不合法立刻拋出異常,注意函數內部只負責拋出異常

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

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

相關文章

批量合并多張 jpg/png 圖片為長圖或者 PDF 文件,支持按文件夾合并圖片

我們經常會碰到需要將多張圖片拼成一張圖片的場景&#xff0c;比如將多張圖片拼成九宮格圖片&#xff0c;或者將多張圖片拼成一張長圖。還有可能會碰到需要將多張圖片合并成一個完整的 PDF 文件來方便我們進行打印或者傳輸等操作。那這些將圖片合并成一張圖片或者一個完整的文檔…

程序化廣告行業(73/89):買賣雙方需求痛點及應對策略深度剖析

程序化廣告行業&#xff08;73/89&#xff09;&#xff1a;買賣雙方需求痛點及應對策略深度剖析 大家好&#xff01;一直以來&#xff0c;我都熱衷于在技術領域探索學習&#xff0c;也深知知識的分享能讓我們共同進步。寫這篇博客的目的&#xff0c;就是希望能和大家一起深入了…

[隨筆] nn.Embedding的前向傳播與反向傳播

nn.Embedding的前向傳播與反向傳播 nn.Embedding的前向計算過程 embedding module 的前向過程其實是一個索引&#xff08;查表&#xff09;的過程 表的形式是一個 matrix&#xff08;embedding.weight, learnable parameters&#xff09; matrix.shape: (v, h) v&#xff1a;…

構建實時、融合的湖倉一體數據分析平臺:基于 Delta Lake 與 Apache Iceberg

1. 執行摘要 挑戰&#xff1a; 傳統數據倉庫在處理現代數據需求時面臨諸多限制&#xff0c;包括高昂的存儲和計算成本、處理海量多樣化數據的能力不足、以及數據從產生到可供分析的端到端延遲過高。同時&#xff0c;雖然數據湖提供了低成本、靈活的存儲&#xff0c;但往往缺乏…

Maven error:Could not transfer artifact

問題描述 當項目從私有倉庫下載依賴時&#xff0c;Maven 報錯&#xff0c;無法從遠程倉庫下載指定的依賴包&#xff0c;錯誤信息如下&#xff1a; Could not transfer artifact com.ding.abcd:zabk-java:pom from/to releases (http://192.1122.101/repory/mavenleases/): 此…

Dify 生成提示詞的 Prompt

Dify 生成提示詞的 Prompt **第1次提示詞****第2次提示詞****第3次提示詞**總結 Dify 生成提示詞是&#xff0c;會和LLM進行3次交互&#xff0c;下面是和LLM進行交互是的Prompt。 以下是每次提示詞的概要、目標總結以及原始Prompt&#xff1a; 第1次提示詞 概要&#xff1a; …

sqli-labs靶場 less4

文章目錄 sqli-labs靶場less 4 聯合注入 sqli-labs靶場 每道題都從以下模板講解&#xff0c;并且每個步驟都有圖片&#xff0c;清晰明了&#xff0c;便于復盤。 sql注入的基本步驟 注入點注入類型 字符型&#xff1a;判斷閉合方式 &#xff08;‘、"、’、“”&#xf…

【什么是動態鏈接?這里的動態是什么意思?鏈接了什么?】

動態鏈接&#xff08;Dynamic Linking&#xff09;詳解 1. 什么是動態鏈接&#xff1f; 動態鏈接是 Java 虛擬機&#xff08;JVM&#xff09;在運行時將字節碼中的符號引用&#xff08;Symbolic Reference&#xff09;轉換為直接引用&#xff08;Direct Reference&#xff09;…

AWS S3深度剖析:云存儲的瑞士軍刀

1. 引言 在當今數據驅動的世界中,高效、可靠、安全的數據存儲解決方案至關重要。Amazon Simple Storage Service (S3)作為AWS生態系統中的核心服務之一,為企業和開發者提供了一個強大而靈活的對象存儲平臺。本文將全面解析S3的核心特性,幫助讀者深入理解如何充分利用這一&q…

【Game】Powerful——Martial Arts Challenge(6)

文章目錄 攻略關卡一&#xff08;虎子&#xff09;關卡二關卡三關卡四關卡五關卡六——奇窮 攻略 關卡一&#xff08;虎子&#xff09; 參戰選手 出手順序 關卡二 參戰選手 出手順序 關卡三 參戰選手 出手順序 關卡四 參戰選手 出手順序 關卡五 參戰選手 出手順序 關卡六…

PPIO × UI-TARS:用自然語言操控電腦,AI Agent 的極致體驗

Manus的爆火預示著AI 正在從單純的文本生成和圖像識別邁向更復雜的交互場景。字節跳動近期推出的開源項目 UI-TARS Desktop 為我們展示了一種全新的可能性&#xff1a;能夠通過自然語言理解和處理來控制計算機界面。這款工具代表了人工智能與人機交互領域的重大突破&#xff0c…

電腦屏保壁紙怎么設置 桌面壁紙設置方法詳解

電腦桌面壁紙作為我們每天面對的第一視覺元素&#xff0c;不僅能夠彰顯個人品味&#xff0c;還能營造舒適的工作或娛樂氛圍。電腦桌面壁紙怎么設置呢&#xff1f;下面本文將為大家介紹Windows和macOS兩大主流操作系統中設置電腦桌面壁紙的方法&#xff0c;幫助大家快速設置個性…

popupwindow攔截返回點擊

目的&#xff1a;彈窗只有點擊按鈕可以關閉。 前提&#xff1a;彈窗內有輸入框 試了網上的一些方法 設置彈窗焦點 setFocusable(false) &#xff08;會導致軟鍵盤無法顯示&#xff09;重寫 onBackPressed 方法 &#xff08;不會走這里&#xff09;為 popupwindow 設置 onKey…

數學知識——矩陣乘法

使用矩陣快速冪優化遞推問題 對于一個遞推問題&#xff0c;如遞推式的每一項系數都為常數&#xff0c;我們可以使用矩陣快速冪來對算法進行優化。 一般形式為&#xff1a; F n F 1 A n ? 1 F_nF_1A^{n-1} Fn?F1?An?1 由于遞推式的每一項系數都為常數&#xff0c;因此對…

GitHub 趨勢日報 (2025年04月07日)

GitHub 趨勢日報 (2025年04月07日) 本日報由 TrendForge 系統生成 https://trendforge.devlive.org/ &#x1f4c8; 今日整體趨勢 Top 10 排名項目名稱項目描述今日獲星語言1microsoft/markitdownPython tool for converting files and office documents to Markdown.? 1039P…

ROS多設備交互

ROS多設備連接同一個Master&#xff1a;ROS Master多設備連接-CSDN博客 在多個PC端連接同一個ROS Master后&#xff0c;接下來就可以實現不同設備之間的話題交流&#xff0c;Master主機端啟動不同PC端的功能包等功能了 盡管多個PC端擁有不同的ROS工作空間&#xff0c;但是只要…

基于國內環境 在Ubuntu 上安裝 Docker 指南

前言 在容器化技術主導云原生時代的今天&#xff0c;Docker 憑借其輕量化、高移植性和秒級部署能力&#xff0c;已成為開發與運維的必備工具。然而&#xff0c;國內用戶在 Ubuntu 系統上安裝 Docker 時&#xff0c;常因 ?官方鏡像源訪問受限、網絡延遲高、依賴包安裝失敗 等問…

數據結構:二叉樹(三)·(重點)

二叉樹的存儲結構 ?叉樹?般可以使?兩種結構存儲&#xff0c;?種順序結構&#xff0c;?種鏈式結構。 順序結構 順序結構存儲就是使?數組來存儲&#xff0c;?般使?數組只適合表?完全?叉樹&#xff0c;因為不是完全?叉樹會有 空間的浪費&#xff0c;完全?叉樹更適合…

EasyExcel實現圖片導出功能(記錄)

背景&#xff1a;在舊系統的基礎上&#xff0c;導出一些工單信息時&#xff0c;現需要新添加處理人的簽名或者簽章&#xff0c;這就涉及圖片的上傳、下載、寫入等幾個操作。 1、EasyExcel工具類 &#xff08;1&#xff09;支持下拉框的導出。 import com.alibaba.excel.Easy…

Android Material Design 3 主題配色終極指南:XML 與 Compose 全解析

最小必要顏色配置 <!-- res/values/themes.xml --> <style name"Theme.MyApp" parent"Theme.Material3.DayNight"><!-- 基礎三原色 --><item name"colorPrimary">color/purple_500</item><item name"col…