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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++编程知识分享:C++ 手把手教你实现可变长的数组

發布時間:2025/3/15 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++编程知识分享:C++ 手把手教你实现可变长的数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

01 實現自定義的可變長數組類型

假設我們要實現一個會自動擴展的數組,要實現什么函數呢?先從下面的main函數給出的實現,看看有什么函數是需要我們實現的。

輸出結果:

要實現的方式,要做哪些事情呢?我先列一下:

(1)要用動態分配的內存來存放數組元素,需要一個指針成員變量

(2)重載賦值=運算符

(3)重載[]運算符

(4)重載復制構造函數

(5)實現push_back和length()函數

02 MyArray類的實現步驟

要實現一個可變長數組類的,基本需要實現下面的7個函數:

1. 構造函數

構造函數的目的就是初始化一個數組,代碼如下:

2. 復制構造函數

復制構造函數目的就是產生一個與入參對象一樣的對象,但是由于MyArray類是有指針成員變量的,所以我們必須才用深拷貝的方式來實現復制構造函數,如果使用默認的復制構造函數,則會導致兩個對象的指針成員變量指向的地址是同一個,這是非常危險的。

3. 析構函數

析構函數的目的就是釋放數組的資源。

4. 重載賦值=運算符函數

重載賦值=運算符函數目的就使=號左邊對象里存放的數組,大小和內容都和右邊的對象一樣。

5. 重載[]運算符函數

重載[]運算符函數目的就是能通過[]運算符來獲取對應下標的數組值。

.6. 加入元素到數組末尾的函數

push_back函數的目的就是把一個新的元素,加入到數組的末尾。

7. 獲取數組長度的函數

length()函數就比較簡單了,直接返回成員變量m_size,就是數組的長度了。

03 小結

可變長數組類型實現的整體代碼,如下:

實際上本次的可變長的數組類還缺少一下函數,比如:刪除某個元素的函數、清空數組的函數等等,這些可以留給大家思考。

還有就是 push_back 函數還有優化的空間,當前的 push_back 函數每加入一個元素都會重新分配新的內存,這是會增大開銷的,那么優化的思路:

提前分配好一個 n 大小的空間,當數組大小不夠的時候,則才繼續重新分配 2n 大小的空間,以此類推。

博客園:小林coding

學習C/C++編程,提升C++編程能力,歡迎關注博主的微信公眾號:C語言編程學習基地,一起來學習進步吧!

總結

以上是生活随笔為你收集整理的C/C++编程知识分享:C++ 手把手教你实现可变长的数组的全部內容,希望文章能夠幫你解決所遇到的問題。

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