日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DynamicList

發布時間:2025/4/5 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DynamicList 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1 繼承關系圖和接口實現
    • 2 代碼實現
    • 3 順序存儲線性表的分析

1 繼承關系圖和接口實現

DynamicList設計要點:
當前類當然是類模板

  • 申請連續堆空間作為順序存儲空間
  • 動態設置順序存儲空間的大小
  • 保證重置順序存儲空間時的異常安全性

函數異常安全的概念:

  • 不泄露任何資源
  • 不允許破壞數據

函數異常安全的基本保證:
如果異常被拋出,對象內的任何成員仍然保持有效狀態,并且沒有數據的破壞及資源泄露。

DynamicList接口實現:

template < typename T > class DynamicList : public SeqList<T> { protected:int m_capacity; // 順序存儲空間的大小public:DynamicList(int capacity); // 申請空間int capacity() const;void resize(int capacity); // 重新設置存儲空間的大小~DynamicList(); // 歸還空間 };

DynamicList繼承類圖:


2 代碼實現

DynamicList.h

#ifndef DYNAMICLIST_H #define DYNAMICLIST_H#include "Seqlist.h" #include "Exception.h"namespace LemonLib {template < typename T > class DynamicList : public SeqList<T> { protected:int m_capacity;public:DynamicList(int capacity){this->m_array = new T[capacity];if (this->m_array != NULL){this->m_length = 0;m_capacity = capacity;}else{THROW_EXCEPTION(NoEnoughMemoryException, "No enough memory to new DynamicList object...");}}int capacity() const{return m_capacity;}void resize(int capacity){if (capacity != m_capacity){T* array = new T[capacity];if (array != NULL){int len = (this->m_length < capacity) ? this->m_length : capacity;for (int i=0; i<len; i++){array[i] = this->m_array[i]; /* 賦值發生異常時,捕獲異常后,當前對象仍然是可用的,保證了異常安全 */}T* temp = this->m_array;this->m_array = array;this->m_length = len;this->m_capacity = capacity;delete[] temp; /* 之所以最后才delete是為了防止delete時調用析構函數,*//* 而析構函數中拋出異常導致當前對象構造不完全 *//* 保證異常安全 */}}}~DynamicList(){delete[] this->m_array;} };}#endif // DYNAMICLIST_H

測試代碼main.cpp

#include <iostream> #include "Object.h" #include "Exception.h" #include "List.h" #include "Seqlist.h" #include "Staticlist.h" #include "Dynamiclist.h"using namespace std; using namespace LemonLib;int main() {DynamicList<int> sl(5);for (int i=0; i<sl.capacity(); i++){sl.insert(0, i);}for (int i=0; i<sl.length(); i++){cout << sl[i] << endl;}sl.remove(3);for (int i=0; i<sl.length(); i++){cout << sl[i] << endl;}try{sl[5] = 0;}catch (const Exception& e){cout << e.message() << endl;cout << e.location() << endl;}return 0; }

3 順序存儲線性表的分析

下面的代碼是否正確?

void func() {DynamicList<int> d1(5);DynamicList<int> d2 = d1; // copy assignmentfor (int i=0; i<d1.capacity(); i++){d1.insert(i, i);d2.insert(i, i*i);}for (int i=0; i<d1.length(); i++){cout << d1[i] << endl;} }

分析: 上面的代碼是有很大的問題的。DynamicList<int> d2 = d1這句話是實際上是進行了拷貝構造,顯然這里是淺拷貝。那么,d1和d2的m_array將會指向同一片堆空間,那么d2進行的操作將會覆蓋d1進行的操作。

解決辦法: 對于容器類型的類,可以考慮禁用拷貝構造和賦值操作(直接在List類中進行相關處理即可)。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的DynamicList的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人夜晚看av | 日韩午夜视频在线观看 | 男女国产精品 | 电影中文字幕 | 污视频在线播放 | av官网在线观看 | 青青草在线观看视频 | 男女午夜视频在线观看 | 德国老妇性猛交 | 午夜影院私人 | 久久久久无码国产精品一区李宗瑞 | 国精产品一区一区三区 | xxxxwww一片| 亚洲成人免费在线观看 | 国产精品久久综合视频 | 中文字幕无线码一区 | 涩涩视屏 | 免费久久视频 | 国内外成人免费视频 | 被各种性器调教到哭vk | 免费观看国产精品视频 | 亚洲欧美黄 | 欧美成人r级一区二区三区 中文无码一区二区三区在线观看 | 日本黄色片 | 超能一家人电影免费喜剧在线观看 | 美女张开腿让男人操 | 久久久久a| 超碰在线免费播放 | 国产喷水在线 | 337p粉嫩大胆噜噜噜亚瑟影院 | 4444亚洲人成无码网在线观看 | 黑巨茎大战欧美白妞 | 欧美处女 | 91精品国产乱码在线观看 | 免费观看国产视频 | 最近中文字幕在线中文高清版 | 做暧暧视频在线观看 | 4438x全国最大成人 | www,色| 国产中文字幕一区 | 91精品国产aⅴ一区 黄色a网 | 一区二区在线精品 | 国产内射老熟女aaaa∵ | 久久亚洲精 | 免费成人黄色 | 秋霞欧美一区二区三区视频免费 | 一级黄色短视频 | 日韩视频在线观看二区 | 天堂va蜜桃一区二区三区 | 欧美日韩综合 | 爱情岛亚洲首页论坛 | 国产青青草视频 | 国产精品久久久久久久久久免费 | 欧美日韩国产精品一区二区 | 69国产精品 | 久久av高潮av无av萌白 | 色屁屁网站 | 美女黄色一级视频 | 精品视频在线免费观看 | 日日夜夜狠狠操 | 亚洲色图13p| 成人免费毛片视频 | 久久久久久久久久影视 | 成人香蕉视频 | 中文字幕高清在线观看 | 免费在线观看毛片视频 | 国产人妻777人伦精品hd | 免费a大片 | 国产黄色小说 | 国产精品久久久久三级无码 | 狠狠躁夜夜躁 | 97人妻人人揉人人躁人人 | 美女视频三区 | 我的好妈妈在线观看 | 日本视频在线免费观看 | 日韩在线观看不卡 | 超碰人体 | 欧美日韩国产精品一区 | 日韩av手机在线免费观看 | 深夜福利网站 | 99极品视频| 婷婷社区五月天 | 好吊色网站 | 欧美大肥婆大肥bbbbb | 直接看的av | 1024中文字幕 | 7m精品福利视频导航 | 亚洲免费在线 | 欧美日韩国产一级 | 毛片福利 | 四虎国产精品成人免费入口 | 天天摸夜夜添狠狠添婷婷 | 夜夜小视频 | 好吊日精品视频 | 亚洲不卡在线视频 | 日本精品一区二区三区四区的功能 | h片在线观看免费 | 亚洲欧美成人综合 | 秋霞视频在线观看 |