c 陣列改vector的問題

2025-01-07 12:25:04 字數 2171 閱讀 8358

1樓:網友

m_ppdisplayableobjects = new displayableobject*[inumberobjects + 1];

你把displayableobject*當作int來看,同int * p = new int[10];

也就是說m_ppdisplayableobjects是指向displayableobject*型別的大小為(inumberobjects+1)的陣列的第乙個元素 的指標。

那這個陣列到底存的是什麼呢?displayableobject*型別。也就是說陣列存檔值是乙個乙個的指標,即乙個乙個的位址。

一般就是4個位元組的數字。這些值,分別對應了乙個displayableobject型別的變數(注意,是displayableobject,沒有*號)。

再不懂得話,就去好好看看書上說的指標,然後動手畫畫。多思考。

ps:如果改用vector的話,就不要分配大小了,vector在需要的時候呼叫push_back就可以了,沒必要提前分配num+1大小。

2樓:

建立類的指標陣列。

c++中怎麼更改vector元素的值?

3樓:信必鑫服務平臺

1、首先需要開啟軟體如紅框勾選所示,構造乙個int型別的vector向量。

<>3、如紅框勾選所示,將vector元素的值修改為6個元素值為20的vector向量。

4、執行結果顯示,成功的構造了6個元素為20的向量。

c++有了向量(vector)為什麼還要用陣列

4樓:匿名使用者

沒記錯的話,好像是vector適用於多執行緒,比較安全,但速度比較慢。

陣列佔用的資源更小,就像你用string和char 陣列的道理是一樣的用更底層的速度更快,方便性沒寫好的string好用而以而且要搞清楚乙個關係,沒有陣列,哪來的向量。

我再補充一點陣列是棧上分配空間,vector是堆上分配空間。

陣列是c++語法裡規定的基本資料型別。而vector本身並不是c++的一部分,是屬於c++標準庫提供的功能,是一群c++大牛們寫出來的給c++菜鳥們使用的東東。如果你是大牛,那麼你也可以寫出乙個東東來取代vector

動態記憶體管理,不易出錯!

其實vector和陣列一樣,只能儲存單一的資料型別,它的另乙個主要的好處是可以動態的增長長度,定義乙個vector型別的變數時,並不需要指定它的容量是多少,如果有需要,只管往裡面push資料。

vector會為你自動管理這些資料。

我們在程式中可能經常要用到陣列,但有時候我們可能並不知道自己的程式中具體用到陣列的大小(比如說,我們讀乙個檔案記錄,根據記錄多少調整陣列的大小,事先並不知道到底有多少記錄),這種情況下,傳統上是用動態陣列實現的,這樣不怎麼安全。但有了vector我們就不必關心陣列的大小,而直接宣告為vectorarray_name,其中,type_name為你要定義的陣列型別,array_name為陣列變數名,當你需要往陣列中放資料時,只需要用如下格式array_要放入的資料),vector會自動調整陣列大小,要減小陣列大小,可以用如下格式array_;

至於效率,沒怎麼注意過,但是感覺陣列效率應該比vector高,vector只是使用。

起來比較方便。

陣列的效率比vector要高,vector用起來要比陣列方便。

樓上說的已經很好了!我在補充一點。

陣列在記憶體中分配的連續空間,多次分配釋放後會有記憶體碎片,而vectors是動態增長的,不是連續的,所以不會出現記憶體碎片。

還有vector的迭代器能防止出現類似陣列愈界等等。

動態申請記憶體。

c++中怎麼更改vector元素的值?

5樓:網友

首先要找到要修改的元素,然後直接賦值即可。

通常來說,vector可以通過下標和迭代器來索引。假設有乙個vectorv,以下**分別將其第n+1個元素修改為0。

通過下標索引:

v[n] = 0;

通過迭代器索引:

+n) = 0;

6樓:

vector內部就是乙個陣列,resize相當於new+memcpy,過載了 讓他操作跟陣列基本一樣。

7樓:網友

下標操作或用迭代器操作。

c語言陣列問題,C語言陣列問題

int main i for i 0 i 這個要問數學老師才知道。c語言陣列問題 你的 問題有以下幾個 1 min和max沒有初始化 2 對於a min 和a max 沒有做迴圈參考 如下 include main printf 最大數是 d,下標是 d,最小數是 d,下標是 d n a max m...

c語言陣列長度的問題,C語言陣列長度的問題

strlen函式並非用來求陣列長度,而是求字串中有效字元長度。您的定義 a 3 看上去是一個char型別陣列,但同時a也可以是一個字串,內容為 abc.之所以後面省略,是因為您的字串沒有結尾符 0 即這個字串在定義時未封閉。這導致 c 後面的內容被strlen函式計入字串長度。所以它在您的某一次執行...

c語言陣列問題

從左至右圖 8位元組正確。b正確,選b 因為系統會給x陣列多分配一個單元儲存字串結束標誌 0 d,編譯出錯 因為陣列名是常指標,不能再賦值,a b 違反了這一規則。第8題 char str 8 因為有一個8,不管str裡面放什麼,系統都保證且僅僅分配給str變數8個位元組的儲存空間。故選8。第9題 ...