C 中的重新分配:探索std::vector 解決方案
在C 中,缺少明確realloc 函數可能會引起關注,當您需要擴展動態緩衝區。然而,std::vector 模板類別為這個問題提供了便利高效的解決方案。
理解重新分配
重新分配涉及調整先前分配的記憶體區塊的大小。在 C 中,這是透過 realloc 函數實現的。然而,C 引入了 std::vector 類,它管理動態數組並提供更簡單、更安全的重新分配方法。
使用std::vector 重新分配
要分配初始值設定為0 的n 個元素的數組,通常可以使用:
Type* t = (Type*)malloc(sizeof(Type)*n); memset(t, 0, sizeof(Type)*m);
With std::vector,這可以簡化為:
std::vector<Type> t(n, 0);
要擴大數組以容納 n2 個元素,您可以使用:
t = (Type*)realloc(t, sizeof(Type) * n2);
對於std::vector,這是透過以下方式實現:
t.resize(n2);
將指標傳遞給函數
傳遞指標時,可以使用&t[0]而不是t。這是有效的,因為 std::vector 支援使用其元素作為指向底層數組的指標。
Foo(&t[0])
結論
利用 std::vector,您可以輕鬆、安全地在 C 中重新分配動態記憶體。這消除了明確記憶體管理的需要,使您的程式碼更加簡潔且不易出錯。
以上是`std::vector` 如何處理 C 中的動態陣列重新分配?的詳細內容。更多資訊請關注PHP中文網其他相關文章!