C STL 容器概要

2022-05-07 00:54:13 字數 1438 閱讀 2623

1、  所有的容器都是「value」語意,而不是「reference」語意。容器進行元素的安插操作時,內部實施的都是拷貝操作,置於容器內。因此stl容器的每個元素都必須能被拷貝。如果你打算存放的物件不具有public copy建構函式,或者你要的不是副本(例如你要的是被多個容器共同容納的元素),那麼元素就只能是指標(指標物件)。

2、  所有元素都形成乙個次序。每個容器都可以依相同次序一次或多次遍歷每個元素。每個容器都提供返回「迭代器」的函式,運用這些迭代器可以訪問所有元素。

3、  各項操作非絕對安全。呼叫者必須保證傳給操作函式的引數符合要求。違反這些要求(例如非法索引)會導致未定義的行為,並且stl不會丟擲異常,從而導致程式資料錯誤或者崩潰等問題。

每個容器都有個default建構函式,乙個copy函式和乙個析構函式。

操作

效果

conttype c

產生乙個未含任何元素的空容器

conttype c1(c2)

產生乙個同型容器

conttype c(begin,end)

複製[begin,end]區間的元素,作為初值

c.size()

返回容器中的元素數量

c.empty()

判斷容器是否為空,相當於(0==size()),可能更快

c.max_size()

返回元素的最大可能數量

c1 == c2

判斷c1是否等於c2

c1 != c2

判斷c1是否不等於c2,相當於!(c1==c2)

c1 < c2

判斷是否c1小於c2

c1 > c2

判斷c1是否大於c2

c1 >= c2

判斷是否c1大於等於c2,相當於!(c1

c1 <= c2

判斷是否c1小於等於c2,相當於!(c1>c2)

c1 = c2

將c2所有的元素賦值給c1

c1.swap(c2)

交換c1和c2的資料

swap(c1,c2)

交換c1和c2的資料,全域性函式

c.begin()

返回乙個迭代器,指向c的第乙個元素

c.end()

返回乙個迭代器,指向c的最後乙個元素的下乙個位置

c.rbegin()

返回乙個逆向迭代器,指向逆向遍歷的第乙個元素

c.rend()

返回乙個逆向迭代器,指向逆向遍歷的最後乙個元素的下乙個位置

c.insert(pos,elem)

將elem的乙份副本安插於pos處

c.erase(beg,end)

移除[beg,end]區間的所有元素

c.clear()

移除所有元素,令容器為空

c.get_allocator()

返回容器的記憶體模型

c STL 容器 聯合容器

stl提供了四種聯合容器 set,multiset,map,multimap set and multiset在標頭檔案 map and multimap在標頭檔案 模板函式都一樣的 set map中迭代器不能 或 因為不是連續的序列,是樹。set 在set中,值就是關鍵字,集合中不會有多個相同的關...

C STL容器總結

三大類容器 1.序列式容器 vector deque list vector是一種動態陣列,在記憶體中具有連續的儲存空間,支援快速隨機訪問。由於具有連續的儲存空間,所以在插入和刪除操作方面,效率比較慢。vector有多個建構函式,預設的建構函式是構造乙個初始長度為0的記憶體空間,且分配的記憶體空間是...

C STL容器運用

priority queue 優先佇列 是定義在 標頭檔案中的乙個模板類,與佇列相比,優先佇列不是按照入隊順序出隊,而是按照佇列中元素的優先權出隊。預設情況下,按照大者優先的順序出隊,也可以指定運算元來指定所需的優先順序。priority queueq1 定義資料型別為int,預設大的先出隊 pri...