1. 程式人生 > >STL vector提高效率注意事項與技巧

STL vector提高效率注意事項與技巧

Vector是STL中最常用的容器,比起使用者自定義的陣列,具有記憶體分配對使用者透明,可動態增長等特點。

vector什麼操作導致效率低?

毫無疑問,那就是當vector 預留空間不足
常用操作push_back()函式在每次插入元素時會檢測預留空間是否夠用

push_back()時預留空間不夠用:要重新分配記憶體,並且拷貝當前已有的所有元素到新的記憶體區域。如果已有元素很多,這個操作將變的非常昂貴。


  • ector的記憶體管理策略是:一旦空間不足,則增長一倍,對於大資料量,這也許是一塊不容小覷的資源

所以應該儘量避免vector重新分配記憶體。

怎麼避免vector自動重新分配記憶體?

可以預先估計元素的個數,用reserve函式進行預留空間的分配

這個函式會分配一塊指定大小的空間,但不進行任何初始化,所以分配出來的空間不包含元素,也就不能訪問。然後用同樣的方式使用push_back函式,此時只要不超過之前reserve的空間,vector不會進行記憶體重新分配,只是簡單的依次往後擺放。

所以當你用push_back時,請慎重考慮是否需要reserve。