STL學習小記

2021-06-16 08:30:32 字數 2305 閱讀 8864

2009-05-09 17:04

387人閱讀收藏 

舉報stl(standard template libarary)主要提供了三類工具:容器container,迭代器iterato,演算法algorithm.

stl提供了兩類容器:

序列容器——以線性序列方式組織物件;

關聯容器——用關聯的鍵把物件組織在一起。

關聯容器(associative container)與順序容器(sequential container)的本質區別在於:關聯容器是通過鍵(key)儲存和讀取元素的,而順序容器則通過元素在容器中的位置順序儲存和訪問元素。關聯容器支援通過鍵值來高效地查詢和讀取元素,兩個基本的關聯容器是map和set。map的元素是「鍵-值」對的二元組形式:鍵用作元素在map中的索引,而值則表示所儲存和讀取的資料。set僅包含乙個鍵,並有效地支援關於某個鍵是否存在的查詢。set和map型別的物件所包含的元素都具有不同的鍵。如果需要乙個鍵對應多個例項,則需要使用multimap或multiset型別。這兩種型別允許多個元素擁有相同的鍵。

序列容器:有三種基本型別,分別對應於模版vector,deque和list。他們都儲存了一組特定型別t的物件,這些物件以線性序列方式組織,但每個容器都可以訪問以不同方式優化的內容。

vector動態的增加物件的個數,他的大小小於或者等於他的容量。他在尾部刪除和新增是最高效的,相當於簡單的陣列的組織方式。

deque動態的增加物件的個數,他的大小等於它的容量,他沒有capacity()成員函式,他在兩端新增和刪除是最高效的。他和vector一樣在中間新增和刪除,過程比較慢,需要複製已有的元素。由於內部組織方式不同,deque容器用起來比vector容器略慢。

list的內部組織方式是雙向鍊錶,可以在序列的任意位置高效的插入和刪除元素。他的主要限制是隨機訪問元素比較慢,因為這需要從list的第乙個元素或者最後乙個元素開始遍歷整個list,查詢每個元素。

所以要根據他們的特點來選擇合適的容器。

關聯容器:允許使用健儲存和提取綜合型別的物件。

關聯容器有四個基本型別:map,multimap,set和multiset。

下略:stl迭代器,下面迭代器的功能是累加的,輸入輸出迭代器功能最弱,隨機訪問迭代器功能最強。

輸入輸出迭代器:用於讀取一些列的物件,且只能使用一次。如需要二次讀寫序列,就必須建立乙個新的輸入輸出迭代器。

向前迭代器:合併了輸入輸出迭代器,可以多次使用。

雙向迭代器:與向前迭代器一樣,但可以向前向後遍歷一系列物件。

隨機訪問迭代器:提供的功能和雙向迭代器相同,還可以隨機讀寫元素。

每種迭代器在運算方面都有限制。

不同的容器支援不同的迭代器。

vector和deque容器支援隨機訪問迭代器;list,map,multimap,set,multiset容器支援雙向迭代器。

stl演算法:

stl演算法是stl中最大的工具集合。不是所有的演算法都和應用程式有關,其中的一些演算法還有專門的用途。

演算法主要分為三大類:

1:不修改序列的操作:find(),find_end(),find_first(),adjacent_find(),count(),mismatch(),search(),equal();

2:修改序列的操作:修改序列中的元素。swap(),copy(),transform(),replace(),remove(),reverse

(),rotate(),fill(),radom_shuffle();

(),merge(),min(),max(),lexicographical_compare().

數值演算法:accumulate<>,adjacent_difference<>,inner_product<>,partial_sum<>.

函式物件:過載了函式呼叫運算子operator()的類物件,專門用於作為引數傳送給函式,其效率比使用原始的函式指標更高。

stl標頭檔案:

:單埠陣列容器

:雙埠陣列容器

:雙向鍊錶容器

:map和multimap關聯陣列容器

:set和multiset已排序的設定容器

:表示位序列的物件

:雙埠佇列(容器介面卡)

:堆疊(容器介面卡)

支援迭代器,需要標頭檔案,容器標頭檔案中包含迭代器標頭檔案;標頭檔案包含頭文

件,這個標頭檔案中包含定義和管理map和multimap容器所使用的鍵/值對所需的宣告。

演算法的宣告在標頭檔案中,函式物件的支援由標頭檔案的宣告提供。

數值演算法在標頭檔案中宣告,另外還有標頭檔案提供複雜數字的支援,標頭檔案提供了數值陣列的支援。

另外在流檔案集合中還宣告了一些迭代器,如:,,,。這些標頭檔案利用stl支援基於基本stl演算法的輸入輸出。

iBatis學習小記

1.注意sqlmap.config檔案的sqlmap資源的順序 由於ibatis在初始化時,會將所有的資源檔案,按配置的順序讀入,如果資源的順序錯了,會引發以下異常。this sql map does not contain an resultmap named codenode.codetype ...

2013 9 5學習小記

今天是忙碌的一天,老師帶著我們複習了前面資料庫的知識,因為前邊學的不怎麼認真,拉下不少東西,感覺 人家複習我就在預習一樣。還好老師講的非常詳細,調理清晰明白 注意聽 最後還是弄明白了,在這真得跟姚洪波老師說聲 謝謝您,您辛苦了.資料庫的知識點 1.建立資料庫 2.建立表 3 用 對資料庫裡面的資料 ...

bitset學習小記

cplusplus官網的資料 bitset bitset作為stl中乙個位集,主要在涉及二進位制位儲存,操作時比較方便。定義及基本操作 bitsetb,定義乙個包含n個二進位制位的變數。可以通過unsigned 值或string型別來初始化,如 bitset 32 b 0xffff 表示將前16位初...