2010-09-01 45 views
2

我將如何動態添加一個值(推)到一個數組?我可以在AS3中做到這一點,但我無法在C++中找到它的功能。PUSH數組C++?

回答

8

你不能,如果它是一個靜態定義的數組像這樣:

int array[10]; 

它的大小是固定的。但是,如果你使用的容器,如std::vector你會使用:

std::vector::push_back() 
+1

+1:使用std :: vector獲取動態大小的數組需求。 – Puppy 2010-09-01 09:07:35

+0

我會說任何數組的使用向量。 – Kugel 2010-09-01 09:40:46

6

這是不可能的「推」在一個靜態分配的經典C風格的數組,它不會是一個好主意,實現你的自己的「方法」,以動態地重新分配一個數組,這已經爲你在做STL,您可以使用vector

#include <vector> 
// ... 
std::vector<int> vect; 
vect.push_back(1); 
vect.size(); // --> 1 
vect.push_back(2); 
vect.size(); // --> 2 
// ... 
+0

+1:這個例子對我有幫助,謝謝 – 2010-09-01 09:17:55

1

使用一個std ::向量。您不能推入C風格陣列,例如INT []。

1

假設你並不意味着std::vector<>,在那裏你會很明顯使用std::vector<>::push_back(),但實際的數組,那麼你需要知道

  1. 是否有在數組的末尾至少一個未使用的插槽?
  2. 是嗎?然後將該值放在第一個未使用的插槽中。 不是嗎?爲至少是前一個大小的新陣列分配內存,以及所需的任意數量的額外插槽,將舊值複製到那裏並添加新值。

以上這些當然意味着您知道上次使用的插槽位於可用內存中的哪個位置。

這是什麼std::vector<>是你知道的。