C 順序容器

2021-06-29 11:02:33 字數 3213 閱讀 9814

一、順序容器型別

順序容器:vector、list、deque

介面卡:stack、queue、priority_queue

使用這些容器都必須使用相應的標頭檔案

二、容器元素初始化

cc;   建立乙個名為c的空容器

cc(c2); 建立容器c2的副本

cc(b,e); 建立c,其元素是迭代器b和e的範圍內的副本,區間為前閉後開。

cc(n,t);  建立n個值為t的元素建立c。只適用於順序容器

cc(n) ; 建立有n個初始化元素的容器c。只適用於順序容器

三、容器內元素的型別約束

1、元素型別物件必須支援賦值運算。

2、元素型別物件必須可以複製。

因此引用型別和io庫型別不能為容器的元素。

四、迭代器範圍

一般為左閉右開區間

五、容器定義的型別別名

size_type:無符號整形。

iterator: 此容器的迭代器型別

const_iterator:元素的唯讀迭代器型別

reverse_iterator:按逆序定址的迭代器,逆序迭代器做++操作將指向容器的前乙個元素

const_reverse_iterator:唯讀逆序迭代器

value_type:元素型別

六、begin和end成員

c.begin()  返回迭代器,指向第乙個元素。

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

c.rbegin() 指向最後乙個元素

c.rend() 指向第乙個元素的前乙個位置

七、順序容器中新增元素

c.push_back(t):容器尾部插入乙個元素。適合所有順序容器。

c.push_front(t): 容器前段新增元素。只適合list和deque型別

c.insert(p,t); 在迭代器p所指向元素之前插入元素t,返回新元素的迭代器。

c.insert(p,n,t);在迭代器p所指向元素之前插入n個t,返回void。

c.insert(p,b,e); 在迭代器p之前插入由迭代器b和e標記的範圍內元素,返回void。

注意:容器元素都是副本

八、關係操作

1、如果兩個容器具有相同的長度且所有元素都相等,那麼這兩個容器就相等

2、如果兩個容器的長度不同,但較短的容器中所有元素都等於較長容器中對應的元素,則較短的容器小於另乙個元素。

3、如果兩個容器都不是對方的初始化子列,則他們的比較結果取決於所比較的第乙個不相等的元素。

九、容器大小的操作

c.size()  返回c中元素的個數

c.max_size() 返回容器c中可容納的最多元素個數

c.empty() 判斷容器是否為空

c.resize(n)  調整容器c的長度大小,使其能容納n個元素

c.resize(n,t) 調整容器c的大小為n,並初始化為t

十、元素訪問

c.back() 返回容器的最有乙個元素的引用

c.front() 返回容器c的第乙個元素的引用

c[n] 返回下標為n的元素的值。只適用於vector和deque

c.at(n) 返回下標為n的元素的值。只適用於vector和deque

一、刪除元素

c.erase(p) 刪除p所指向的元素,返回指向其下乙個元素的迭代器

c.erase(b,e) 刪除迭代器b,e之間的元素,返回e的下乙個迭代器。

c.clear() 刪除c內所有元素

c.pop_back() 刪除c的最後乙個元素,返回void。

c.pop_front() 刪除c的第乙個元素,返回void。只適用於list和deque。

二、賦值和swap

c1 = c2 ; 刪除c1的所有元素,然後將c2的元素複製給c1.

c1.swap(c2); 交換內容,c1中存放的是c2的內容,c2存放的是c1的內容

c.assign(b,e) 重新設定c的元素,將迭代器b和e所標記的所有元素複製到c中,b和e必須不是指向c中元素的迭代器

c.assign(n,t) 將容器c重新設定為儲存n個值為t的元素。

三、介面卡

棧介面卡

s.empty()

s.size()

s.pop() 刪除棧頂元素,但不返回其值

s.top() 返回棧頂的元素值

s,push(item)

佇列介面卡和優先順序佇列介面卡

q.empty()

q.size()

q.pop()  刪除對首元素

q.front()  返回隊首元素,只適用於佇列

q.back() 返回隊尾元素,只適用於佇列

q.top()  返回具有最高優先順序的元素值,但不刪除該元素,只適應於優先順序佇列

q.push(item)對於queue,在隊尾壓入乙個新元素

對於priority_queue,在基於優先順序的適當位置插入新元素。

C 順序容器

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

C 順序容器

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

c 順序容器

1.幾種順序容器的比較 容器本質 特點適用範圍 vector 可變大小陣列 連續儲存,快速隨機訪問,除尾部插入刪除慢 預設使用 deque 雙端佇列 快速隨機訪問,除首尾插入刪除慢 兩端都需要新增刪除元素 list 雙向鍊錶 不支援隨機訪問 只能遍歷 插入刪除迅速,額外記憶體開銷大 需要中間插入元素...