pb_ds 簡介

pb_ds 庫全稱 Policy-Based Data Structures。

pb_ds 庫封裝了很多數據結構,比如哈希(Hash)表,平衡二叉樹,字典樹(Trie 樹),堆(優先隊列)等。

就像 vectorsetmap 一樣,其組件均符合 STL 的相關接口規範。部分(如優先隊列)包含 STL 內對應組件的所有功能,但比 STL 功能更多。

pb_ds 只在使用 libstdc++ 為標準庫的編譯器下可以用。

可以使用 begin()end() 來獲取 iterator 從而遍歷

可以 increase_key,decrease_key 以及刪除單個元素

由於 pb_ds 庫的主要內容在以下劃線開頭的 __gnu_pbds 命名空間中,在 NOI 系列活動中的合規性一直沒有確定。2021 年 9 月 1 日,根據 《關於 NOI 系列活動中編程語言使用限制的補充説明》,允許使用以下劃線開頭的庫函數或宏(但具有明確禁止操作的庫函數和宏除外),在 NOI 系列活動中使用 pb_ds 庫的合規性有了文件上的依據。

參考資料:《C++ 的 pb_ds 庫在 OI 中的應用》