原创 STL關聯式容器之總覽

在上一個系列中,我們學習了STL序列式容器,如vector,list,deque以及某些配接器如stack,queue等。前面我們提過,STL有兩種容器,一種即STL序列式容器,另一種即我們即將學習的關聯式容器。 標準的STL關聯式容器有

原创 STL序列式容器之雙端隊列——deque

前面我們學習過序列容器vector,vector是佔用一段連續內存空間,並且是單向開口的,只能在尾部進行壓入或者彈出元素(其實從技術上講,vector也可以實現在頭部實現插入和刪除操作,但是效率非常低,因此SGI的STL並不支持在頭部操作

原创 STL序列式容器之vector

首先我們需要對STL的容器有一個宏觀的概念,然後在仔細討論vector。 STL容器分爲兩類:分別是序列式容器和關聯式容器。 序列式容器: vector, heap, priority_queue, list, slist, deque,

原创 字符串實現大數相加

#include<iostream> #include<string> #include<sstream> #include<algorithm> using namespace std; char in

原创 STL關聯式容器之紅黑樹

這一節我們來學習紅黑樹,如果你能夠自己實現一個紅黑樹,那麼對它的理解將會更加深刻。 1、樹的總覽 根節點到任何節點之間有一條唯一路徑。 路徑長度:指路徑所經過的邊數。 節點的深度:根節點至該節點的路徑長度。根節點的深度爲0。 節點的高度:

原创 STL序列式容器之heap(注heap並不歸屬於stl組件)

在學習優先隊列之前,我們有必要學習一下堆,heap。 注:heap並不歸屬於STL組件,它是幕後英雄,扮演則優先隊列priority_queue的助手。我們知道優先隊列可以將元素以任意次序壓入隊列中,但是彈出隊列元素時,總是彈出優先級最高

原创 STL序列式容器之list(雙向鏈表)

和vector相比,list的實現更加複雜,因爲它並不要求空間是連續存儲的,它的好處是已知位置的元素插入和移除都是常數時間。 1、list的節點 由於list是雙向鏈表,因此list的節點需要指向前驅節點的指針以及指向後繼節點的指針。 2

原创 STL關聯式容器之映射表——map

1、map的特性 和set一樣,map的元素都會自動根據鍵值進行自動排列,map的所有元素都是pair類型,同時擁有實值和鍵值,pair的第一個元素爲鍵值,第二個元素爲實值,且map不允許兩個鍵值相同的元素。 在學習map之前,我們先學習

原创 STL源碼解析——traits(特性)編程技巧

侯捷老師在《STL源碼剖析》中說到:瞭解traits編程技術,就像獲得“芝麻開門”的口訣一樣,從此得以一窺STL源碼的奧祕。如此一說,其重要性就不言而喻了。       之前已經介紹過迭代器,知道了不同的數據結構都有自己專屬的迭代器,不同