我從這個鏈接看到以下內容:
向量是 STL 的一部分。C 中的向量是表示可以在運行時改變其大小的陣列的序列容器。它們為它們的元素使用連續的存盤位置,就像在陣列中一樣有效,這意味著它們的元素也可以使用指向其元素的常規指標的偏移量來訪問。
向量是用于存盤資料的動態陣列。它不同于存盤順序資料的陣列,本質上是靜態的,向量為程式提供了更大的靈活性。當一個元素被插入或洗掉時,向量可以自動調整它們的大小。
如果向量可以做這么多,在什么情況下我們仍然更喜歡陣列?
謝謝!
uj5u.com熱心網友回復:
如果向量可以做這么多,在什么情況下我們仍然更喜歡陣列?
一個好的設計不是沒有什么可以添加的,而是沒有什么可以洗掉的。或者僅在需要時引入額外的復雜性。
uj5u.com熱心網友回復:
的一個主要缺點std::vector是它在必須增長時使用動態記憶體分配,這在執行時間方面可能非常昂貴。因此,在已知合理上限的情況下,使用定長陣列可能會更好,即使這樣會浪費記憶體空間。這個決定是空間/時間的權衡。
但是,std::vector可以通過呼叫std::vector::reserve.
使用的另一個缺點std::vector是序列化要困難得多。例如,如果您創建 astd::array的成員struct,那么您可以簡單地struct逐位元組復制整個內容以對其進行序列化。但是,如果您成為 astd::vector的成員,這是不可能的struct,因為它可能不會將實際資料存盤在 中struct,而可能只會存盤指向資料的指標。因此,您將無法struct通過簡單地復制struct. 相反,序列化std::vector將需要特殊處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/335752.html
上一篇:拆分特定大小的陣列
下一篇:向后回圈Javascript陣列
