如果我有MyClass類的元件的固定數量,我應該使用陣列或向量?,即:我應該使用矢量而不是數組嗎?
MyClass* myArray[];
或
std::vector<MyClass*> myVector;
?
如果我有MyClass類的元件的固定數量,我應該使用陣列或向量?,即:我應該使用矢量而不是數組嗎?
MyClass* myArray[];
或
std::vector<MyClass*> myVector;
?
如果您知道編譯時的編號 - 請使用靜態array
。
如果數量是動態的(從用戶獲得的) - vector
是更好的爲您節省管理存儲
「固定」在這方面有兩個含義。通常的設置是設置一次,永不改變,如從輸入讀取的值。該值在運行時已知,並且需要在堆上進行動態分配。你的選擇是一個C風格的數組,新的或一個向量;強烈建議你使用矢量。
#include <vector>
#include <iostream>
int main() {
int size;
std::cin >> size;
int *myArray = new int[size];
std::vector<int> myVector(size);
}
「固定」也可以指一個編譯時間常數,這意味着它是在程序的任何運行不變。您可以使用C風格的數組或C++數組(堆棧中的自動內存分配)。
#include <array>
int main() {
const int size = 50;
int myArray[size];
std::array<int, size> myArray;
}
這些更快,但您的程序需要訪問足夠的堆棧內存,這是您可以在項目設置中更改的內容。有關更多信息,請參閱this topic。如果數組的大小非常大,則可能要考慮在堆上分配(矢量)。
+1,但*「靜態內存分配(堆棧)。」*刪除這些單詞。可能會造成靜態存儲時間的混淆。 – Manu343726
*自動*是編輯 –
的標準術語。希望它現在不那麼困惑和更正確。 – Gaminic
可能是'std :: array'。這取決於你有多少元素。如果太多,你可能不得不使用'std :: vector'。 – juanchopanza
如果元素由當前範圍中的當前實例管理器管理,則使用'std :: array'或'std :: array '否則。 –
Pixelchemist
也考慮使用類的向量而不是指針向量。除了你正在做多態或共享所有權之外,指針在這裏沒有任何用處,在這種情況下,智能指針比裸指針要好得多。 – Manu343726