ACM模組解析之 STL

2021-08-19 06:32:56 字數 890 閱讀 7413

stl標準模板庫

一.簡介

stl和資料結構在icpc競賽的作用類似,大部分情況都是題目很難用樸素演算法在規定的時間和記憶體條件中完成,才不得不用的一種優化方式。

在acm競賽中,需要用到陣列、字串、佇列、堆疊、鍊錶、平衡二叉檢索樹等資料結構和排序、搜尋演算法,以提高程式的時間、空間執行效率。這些資料結構如果都需要手工來編寫,那是相當麻煩的事情,幸運的是c++中包含了乙個c++ stl,又稱c++泛型庫,它在std命名空間中定義了常用的資料結構和演算法,使用起來十分方便。

二.內容範圍

1.string 字串 流式讀寫 標頭檔案

( stringstream  標頭檔案

)2.排序和檢索 sort  標頭檔案

3.不定長陣列:vector 容器

4.集合set

5.對映map

6.棧,佇列與優先佇列

7.list雙向鍊錶容器

8.bitset位集合容器

9.deque雙端佇列容器(不太重要)

三.補充內容

關於sort:(重要)

1.待排序/查詢的元素可以放在陣列裡,也可以放在vector裡。前者用sort(a,a+n)的方式呼叫,後者用sort(v.begin,y.end())的方式呼叫。

2.lower_bound的作用是查詢「小於或者等於x的第乙個位置」。

upper_bound的作用是查詢「大於或者等於x的第乙個位置」。

unique函式可以刪除有序陣列中的重複元素。

四.模板整理

可以像資料結構一樣每種整理乙個經典的模板題,多了意義也不大,關鍵是理解並靈活應用和修改。

ACM模組解析之 動態規劃

動態規劃 一.簡介 在acm中,動態規劃是一種將乙個複雜問題分為多個簡單的小問題的思想。在使用動態規劃時,原問題須滿足重疊子問題和最優子結構這個性質。運用動態規劃思想設計的演算法一般比樸素的演算法高效很多。因為在計算某個狀態的時候,已經被計算的子問題將不需要重複計算,而是呼叫之前儲存下的結果。這樣就...

ACM模組解析之 資料結構

資料結構 一.簡介 資料結構在比賽中通常用於對一些題目邏輯簡單,但是測試資料比較大,用樸素 模擬或暴力 演算法,會導致超時或超出記憶體限制的題目。重點演算法需要熟悉掌握和靈活應用。二.演算法分類 1.線性表 棧單調棧 佇列雙端佇列 優先佇列 鍊錶塊狀鍊錶 2.集合 2.1雜湊表 2.2並查集 帶權並...

STL原始碼解析之heap

include include include heap algorithms using namespace std heap的所有元素都必須遵循特別的完全二叉樹排列規則,所有heap不提供遍歷功能,也不提供迭代器 int main vectorivec ia,ia 9 for int i 0 i...