原创 C++ STL(第二十篇:算法-- 排序)

1、概述 排序算法是算法中的重點,排序過的數據,特別容易查找,不管是實際工作還是面試都會用到它。 現實生活中,字典需要排序,書籍索引需要排序,磁盤目錄需要排序,名片需要排序等等。任何數據只要你想快速查找,就需要進行排序。 排序算法有很

原创 VS 性能分析工具

VS性能分析工具的使用 有時我們要對我們的程序進行調優,需要對程序的性能進行分析。性能分析的工具有很多,比如 google profiler、valgrind、xperf等,今天進行整理的是 VS 自帶的性能分析工具。 我使用的是VS

原创 C++ STL(第十九篇:算法-- set相關算法)

1、set 相關算法 前面提到過,有一些算法會跟數據結構綁定在一起,這裏就總結一下與set相關的四種算法,分別是並集、交集、差集、對稱差集。 1.1、set_union set_union 用來構造 S1,S2的並集,此集合內含 S1

原创 C++ STL(第十八篇:算法-- copy)

1、copy算法 不管在什麼地方,copy() 都是一個常常被調用的函數。copy操作不外乎運用 賦值操作 或 拷貝構造 來進行,但是某些元素能夠使用內存直接複製行爲,能夠提高效率,節省時間。 copy() 算法可將輸入區間 [fir

原创 C++ STL(第十七篇:算法)

1、算法的概述 算法,就是一個問題的解法。以有限的步驟,解決邏輯或數學上的問題。STL 收錄了極具複用價值的 70 第一個 算法,包括和赫赫有名的排序、查找、排列、組合等。 有的算法需要搭配特定的數據結構。例如 binary sear

原创 C++ STL(第十六篇:容器的總結)

1、總結 到這裏,對於STL的容器就整理完成了。我們把容器分爲了 序列式容器 和 關聯式容器,而每類下面又分爲好多容器,如下圖所示: 其中,有一些容器需要基於特定的結構或算法,如 priority-queue,set,map,has

原创 C++ STL(第十五篇:hashtable)

1、hashtable hashtable 的目的是爲了提供任何操作都是常數級別。SGI STL 中, hash table 使用了 開鏈法 實現的。大致的意思如下圖所示: hash table 內的元素爲 桶子(bucket),每

原创 C++ STL(第十三篇:RB-tree)

1、概述 RB-tree(紅黑樹) 是除了 AVL-tree 之外,另一個被廣泛使用的平衡二叉搜索樹。所謂 RB-tree,不僅是一個二叉搜索樹,而且必須滿足以下規則: 1、每個節點不是紅色就是黑色。 2、根節點爲黑色。 3、如果節點

原创 C++ STL(第十二篇:容器--關聯式容器介紹和樹的導覽)

1、關聯式容器 前面剛開始整理 STL 容器 時,簡單的說了一下容器可以分爲兩類 序列式容器 和 關聯式容器。前面又對主要的 序列式容器 進行了整理,今天終於輪到 關聯式容器了。 所謂關聯式容器,觀念上類似關聯式數據庫:每筆數據都有一

原创 C++ STL(第十一篇:priority-queue)

priority-queue(優先隊列)是一個擁有權值概念的 queue,它允許加入新元素、移除舊元素、審視元素值等功能。由於這是一個 queue,所以只允許在低端加入元素,並從頂端取出元素,除此之外別無其他存取元素的路徑。 prio

原创 C++ STL(第十篇:heap)

1、heap的概述 heap(堆)並不歸屬於 STL 容器組件,它是個幕後英雄,扮演 priority queue(優先隊列)的助手。priority queue 允許用戶以任何次序將任何元素推入容器,但取出時一定是從優先權最高的元素

原创 C++ STL(第九篇:容器 -- stack和queue)

1、stack stack是一種先進後出的數據結構(也就是我們說的 棧)。它只有一個出口,允許新增元素、移除元素、取得最頂端元素。除了最頂端外,沒有任何其它方法可以存取 stack 的其它元素。換言之, stack 不允許有遍歷行爲。

原创 C++ STL(第八篇:容器 -- deque)

1、deque的概述 deque(雙端隊列)是由 一段一段的定量連續空間構成。一旦有必要在 deque 的前端或尾端增加新空間,便配置一段定量連續空間,串接在整個deque的頭端或尾端。 deque 的最大任務,便是在這些分段的定量連

原创 Windows 任務管理器被Process Explorer 取代後如何恢復

最近使用到了Windows下的 Process Explorer 程序,Process Explorer 可以輕鬆地一鍵取代系統自帶的任務管理器。如下: 使用快捷鍵 ctrl+shift+esc之後,直接彈出 Process Exp

原创 C++ STL(第六篇:容器 -- list)

1、list的概述 相比較於 vector 的連續線型空間,list 就顯得複雜的多,它的好處是每次插入或刪除一個元素,就配置或釋放一個元素空間。因此,list對於空間的運用有絕對的精準,一點也不浪費。而且,對於任何位置的元素插入或元