一位資深競爭性程序員給你推薦的5大優(yōu)秀競爭性編程的C ++庫
C ++是競爭性編程中最推薦的語言之一。因?yàn)樗幚硭俣戎?,可用的庫之多等等?/p>
C ++ STL包含許多用于不同目的的容器。在本文中,我們將從競爭性編程和面試準(zhǔn)備的角度重點(diǎn)介紹最重要的容器。

1.vector:動態(tài)大小的數(shù)組,允許在不關(guān)心數(shù)組大小的情況下進(jìn)行插入和刪除。它還具有純數(shù)組的優(yōu)點(diǎn),例如隨機(jī)訪問和緩存友好性。C ++向量支持許多其他操作,例如: ease(), push_front(), insert()等。
2.queue :在我們希望具有FIFO項(xiàng)順序的情況下很有用。實(shí)施例的問題是,產(chǎn)生具有給定的位數(shù),第一非重復(fù)字符流中的, 樹的層次序遍歷和其變型中,圖的BFS和其變體。
3.set和map:這兩個都實(shí)現(xiàn)自平衡二進(jìn)制搜索樹(特別是紅黑樹)。在我們希望通過中等(比數(shù)組更好,比哈希更差)搜索,插入和刪除查詢時間來維護(hù)排序項(xiàng)目的情況下很有用。例如問題是,在左邊最近的較大的或相同的值,查找最接近的值在每ARRA元素Y,等等。
4.unordered_set和unordered_map:兩者都通過鏈接實(shí)現(xiàn)散列。當(dāng)我們希望快速搜索,插入和刪除時很有用(所有三個操作均為O(1))。這是業(yè)界最常用的數(shù)據(jù)結(jié)構(gòu)之一,也是學(xué)術(shù)界最低估的數(shù)據(jù)結(jié)構(gòu)。
5.priority_queue:默認(rèn)情況下實(shí)現(xiàn)最大堆。我們也可以創(chuàng)建最小堆。只要我們希望有效地找到最小或最大元素,就使用它。它是用來實(shí)現(xiàn)流行的算法,如Prim算法, Dijkstra的最短路徑,霍夫曼編碼等等。