C STL相關知識及容器使用要點

2021-07-06 04:11:10 字數 1191 閱讀 7448

關於stl的一些東東:

1,除了引用型別,所有內建或復合型別都可用作容器的元素型別。因為引用不支援一般意義上的複製運算。

可以被作為容器的元素的型別,必須具有以下兩點特徵:

(1)可賦值;

(2)可複製。

2,容器型別分類:

(1)順序型別:vector , list , deque , stack(容器介面卡) , queue(容器介面卡) , priority_queue(容器介面卡)。

標準容器類

特點vector

支援快速隨機訪問,動態陣列,通過reserve()可管理記憶體,需注意迭代器失效的情況、區分size和 capacity的值

list

雙向環狀鍊錶,不能隨機訪問,支援雙向遍歷,增加元素迭代器不失效,刪除元素,除了被刪的,都不失效,高效的插入和刪除操作

deque

雙向開口的連續線性空間,沒有容量的概念,支援隨機查詢(複雜度o(1) ),不提供記憶體管理的函式,可在前後新增元素。

介面卡特點stack

堆疊,一般使用deque作為支援的序列容器,filo,不可遍歷

queue

佇列,一般使用deque作為支援的序列容器,fifo,不可遍歷

priority_queue

優先佇列,底層使用vector,只能訪問第乙個元素(優先順序最高),不可遍歷

(2)關聯容器:通過key值來儲存和讀取元素。分為:map , multimap , set , multiset , unordered_map,unordered_set。

注意:map , multimap , set , multiset 都是用紅黑樹實現的。而unordered_map,unordered_set使用的是hash實現。

區分map和set:

map:所有元素依照鍵值排序,pair中的第乙個元素是鍵,第二個元素為實值。迭代器不失效,除了被刪除的那個迭代器。

set:所有元素依照鍵值排序,鍵值與實值統一。迭代器不失效,除了被刪除的那個迭代器。

Docker容器使用相關

1 安裝docker centos版本 1.yum docker 2.yum install docker ubuntu版本 1.apt get update 2.apt get docker.io 2 檢視版本 docker v 3 啟動docker service docker start 4 ...

STL string容器使用及模擬實現

一.string介紹。string類 string是表示字串的字串類。該類的介面與常規容器的介面基本相同,再新增了一些專門用來操作string的常規操作。string在底層實際是 basic string模板類的別名,typedef basic string string 不能操作多位元組或者變長字...

C STL各容器迭代器種類及使用原因總結

在c 標準庫的所有容器中,stl提供了幾種不同種類的迭代器,每乙個容器都可以用迭代器來遍歷,但是不同容器的內部資料結構是不一樣的,所以實際為了保證最高的迭代效率,stl針對不同容器提供的迭代器是不一樣的,具體有以下幾種 random access iterator 隨機訪問迭代器,可以通過直接偏移量...