亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么C ++ STL不提供任何“樹”容器?

為什么C ++ STL不提供任何“樹”容器?

C++
qq_遁去的一_1 2019-10-14 10:48:01
為什么C ++ STL不提供任何“樹”容器,而最好使用什么呢?我想將對象的層次結構存儲為樹,而不是將樹用作性能增強...
查看完整描述

3 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

您可能要使用樹有兩個原因:


您想使用樹狀結構來反映問題:

為此,我們有增強圖形庫


或者您想要一個具有樹狀訪問特征的容器,為此,我們有


std::map(和std::multimap)

std::set(和std::multiset)

基本上,這兩個容器的特性使得它們實際上必須使用樹來實現(盡管這實際上不是必需的)。


查看完整回答
反對 回復 2019-10-14
?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

可能出于同樣的原因,boost中沒有樹容器。有很多方法可以實現這樣的容器,并且沒有令人滿意的方法來滿足使用它的每個人。


需要考慮的一些問題:

-節點的子代數目是固定的還是可變的?

-每個節點多少開銷?-例如,您是否需要父指針,兄弟指針等?

-提供哪些算法?-不同的迭代器,搜索算法等


最后,問題最終出在一個樹形容器上,它對每個人都足夠有用,而且重量太大,無法滿足大多數使用它的人的需求。如果您正在尋找功能強大的東西,Boost Graph Library本質上是樹庫可用于什么的超集。


查看完整回答
反對 回復 2019-10-14
?
UYOU

TA貢獻1878條經驗 獲得超4個贊

STL的理念是,您根據保證而不是根據容器的實現方式來選擇容器。例如,您對容器的選擇可能基于對快速查找的需求。盡您所能,容器可以實現為單向列表-只要搜索非常快,您就會感到滿意。那是因為您無論如何都沒有接觸內部,而是使用迭代器或成員函數進行訪問。您的代碼并不局限于容器的實現方式,而是取決于它的運行速度,它是否具有固定的和已定義的順序,或者在空間上是否有效等等。


查看完整回答
反對 回復 2019-10-14
  • 3 回答
  • 0 關注
  • 1245 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號