※ 引述《StubbornLin (Victor)》之銘言:
: 標題: [問題] STL空容器的成本
: 時間: Mon Jul 17 22:57:37 2006
:
: 我想請問一下,關於STL
: 如果容器什麼都沒裝,成本是哪些?
:
: 原因是這樣的,我會有大量的物件,而物件裡面,我打算每個都放一個容器
: 然後真正會用到容器的物件其實不多,所以我想知道一下
: 如果當容器是空的時後,需要付出多少成本?
這要看是哪一種容器
以及你用的 library 的實作方式
以 gcc-4.0 的 vector 來說
vector<_Tp, _Alloc> 繼承自 _Vector_base<_Tp, _Alloc>
而 _Vector_base 有一個成員 其型別為 _Vector_impl
_Vector_impl 繼承自 _Alloc 並增加三個型別為 _Tp* 的成員
而 _Alloc 預設為 allocator<_Tp> 且沒有成員變數
所以算一算
vector<T> 在空容器狀態
占用的空間是三個指標
(不考慮 specialization 的情況下)
[deleted]
: → eugenehsu:一般都是直接放指標阿 龜毛 07/18 00:00
: 推 yoco315:可能的話我都是盡量不想放指標,越多指標越多機會出錯 07/18 00:38
可以用 auto_ptr 指向容器
不過用指標使用上有時候不太方便
像是本來用 my_objects[i] 就要改成 (*my_objects)[i]
滿難看的...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.3.35