C 順序容器

2021-10-04 02:42:42 字數 2573 閱讀 6148

c++primer第九章p292學習筆記

什麼是順序容器?

容器(container)包括兩種:順序容器、關聯式容器和無序容器(新增)。

下表列出了標準庫(stl)中的順序容器,所有順序容器都提供了快速順序訪問元素的能力,但是順序容器會在以下方面有不同的效能折中: 容器

名稱支援的訪問

增刪vector

可變大小陣列

快速隨機訪問

在中間位置插入/刪除元素很慢

string

類似於儲存字元的vector

快速隨機訪問

在中間位置插入/刪除元素很慢

list

雙向鍊錶

雙向順序訪問

在鍊錶的任何位置插入或刪除元素都很快

forward_list

單向鍊錶

單向順序訪問

在鍊錶的任何位置插入或刪除元素都很快

deque

雙端佇列

快速隨機訪問

在頭尾插入或刪除元素很快

array

固定大小陣列

快速隨機訪問

不能新增或刪除元素

vector與string

string和vector都將元素儲存在連續地記憶體空間中,因此隨機訪問速度很快,但是在中間位置增刪元素時需要移動其他元素,導致速度很慢。

list與forward_list

設計的目的是為了令容器的任何位置的增刪操作都很快速,但是這兩個容器不支援隨機訪問。

deque

是乙個更為複雜的資料結構。與string和vector類似,它支援快速的隨機訪問,在中間位置的增刪也可能很慢,但是,deque在兩端增刪元素都是很快的,與list速度相當。

對於容器類的操作:

/**

所有容器都支援的操作

**///型別別名

iterator 此容器型別的迭代器型別

const_iterator 可以讀取元素,但不能修改元素的迭代器型別

size_type 無符號整型,足夠儲存此容器型別的最大可能大小

difference_type 有符號整型,足夠儲存兩個迭代器之間的距離

value_type 元素型別

reference 元素的左值型別,與value_type&含義相同

const_reference 等價於const value_type&

//建構函式

c c; 預設建構函式,構造空容器

c c1

(c2)

; 構造c2的拷貝c1

c c(b, e)

; 構造c,將迭代器b和e指定範圍內的元素拷貝到c(array不支援)

c c(a,b,c...

); 初始化c

//賦值與交換

c1 = c2 將c1中的元素替換為c2中的元素

c1 =

將c1的元素替換為列表中的元素,不適用於array

a.swap

(b); 交換a與b的內容

swap

(a,b) 與a.

swap

(b)等價

//大小

c.size

() c中元素數目(不支援forward_list)

c.max_size

() c中儲存的最大元素數目

c.empty

() 判斷是否為空

//增加刪除元素(不適用於array)

//注:在不同容器中,這些操作的函式都不同

c.insert

(args) 將args中的內容插入c中

c.emplace

(inits) 使用inits構造c中的乙個元素

c.erase

(args) 刪除args中指定元素

c.clear

() 清空所有元素

//關係運算子==,

!= 所有容器都支援

<

,<=

,>

,>= 無序容器不支援

//獲取迭代器

c.begin()

, c.

end(

) 分別返回指向c的收元素和尾元素之後位置的迭代器

c.cbegin()

, c.

cend

() 返回const_iterator

//反向容器的迭代器(不支援forward_list)

reverse_iterator 按逆序定址的迭代器

const_reverse_iterator 不能修改元素的reverse_iterator

c.rbegin()

, c.

rend

() 分別返回指向c的收元素和尾元素之後位置的反向迭代器

c.crbegin()

, c.

crend

()

C 順序容器

一 順序容器型別 順序容器 vector list deque 介面卡 stack queue priority queue 使用這些容器都必須使用相應的標頭檔案 二 容器元素初始化 cc 建立乙個名為c的空容器 cc c2 建立容器c2的副本 cc b,e 建立c,其元素是迭代器b和e的範圍內的副...

C 順序容器

1 概述 乙個容器就是一些特定型別物件的集合。順序容器型別 描述vector 可變大小陣列,支援快速訪問,在尾部之外的地方插入或刪除時可能很慢 deque 雙端佇列。支援快速訪問,在頭尾插入刪除會很快。list 雙向列表。只支援雙向順序訪問。插入刪除很快 forward list 單向列表。只支援單...

C 順序容器

一 各個順序容器效能差異主要體現在一下兩個方面 1.在容器中任意位置新增和刪除元素的代價 2.隨機訪問容器中元素的代價 vector list deque forward list array string vector是可變大小陣列,支援快速隨機訪問,在尾部插入和刪除元素較為方便 list是雙向鍊...