溫馨提示×

C++ std::set的內存占用分析

c++
小樊
214
2024-06-13 16:51:42
欄目: 編程語言

在C++中,std::set是一個有序的集合容器,它基于紅黑樹實現,每個元素都是唯一的,它的內存占用分析如下:

  1. 每個元素占用內存空間為sizeof(T)(T為元素類型),即元素本身的大小。
  2. 每個節點包含指向左子節點、右子節點和父節點的指針,以及一個bool值作為標志位,通常每個指針大小為8字節(64位系統),bool值大小為1字節,因此每個節點占用的空間大約為32字節。
  3. 紅黑樹有額外的空間開銷,包括根節點指針、尾節點指針以及一個size_t類型的變量記錄元素個數,通常每個指針大小為8字節,size_t大小也為8字節,因此紅黑樹的額外空間開銷大約為24字節。
  4. 紅黑樹的空間復雜度為O(n),其中n為元素個數。

綜上所述,std::set的總內存占用大約為:元素大小 * 元素個數 + 節點大小 * 元素個數 + 額外空間開銷,即sizeof(T) * n + 32 * n + 24字節。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女