8 順序容器

2021-08-08 01:30:45 字數 1880 閱讀 1292

1、順序容器有vector(可變大小陣列);deque(雙端佇列);list(雙向鍊錶);forward_list(單向鍊錶);array(固定大小陣列);string字元容器

2、通常vector是最好的選擇,vector是模板而非型別;每個容器都包含乙個標頭檔案,檔名和型別名相同。

3、迭代器類似於指標

//定義迭代器型別iter,型別為list中的iterator

list

::iterator iter;

list

a = ;

auto it = a.begin();//it為list::iterator型別

4、定義乙個array時除了指定元素型別,還要指定容器大小。array可以進行拷貝賦值操作,內建陣列不可以

array

::size_type i;

array

digits = ;

array

copy = digits;

//但是不能用乙個花括號列表賦值

copy = ;//錯

5、向乙個vector、string、deque插入元素會使之前所有指向容器的迭代器、引用、指標失效。

6、向容器中插入元素

list

a;int b=1;

a.push_back(b);//後插

a.push_front(b);//前插

vector

s;s.insert(s.begin(), "hello");//把hello插入到s.begin()之前

//insert返回值指向新插入的元素

7、front、back成員函式返回容器的首尾元素的引用,即就是操作首尾元素

//a = b

auto a = *c.begin();

auto b = c.front();

c.front() = 42;//直接改變容器中元素的值

8、刪除容器中元素(forward_list例外,單鏈表支援insert_after、emplace_after、erase_after)

pop_back

(),pop_front

() 刪除首尾元素;

erase(迭代器) 刪除迭代器指定元素,返回最後乙個刪除元素之後的位置

9、vector和string元素是連續儲存的,容器預留一些空間作為備用來儲存更多新元素。capacity告訴我們容器可以容納多少元素;reserve通知容器應該準備儲存多少個元素。resize成員函式只改變容器中元素的數目,而不是容器的容量。

10、string數值轉換

11、順序容器介面卡(stack、queue、priority_queue(插入的元素不放在尾部,而是根據特定的優先順序排列));介面卡看做某種資料結構,可以把一些資料或其它資料結構嵌入其中。所有介面卡都要求容器具有新增和刪除元素的能力。

//str在vector上實現棧,初始化儲存svec的拷貝

stack

> str(svec);

//棧介面卡

stack

intstack;

for(size_t i = 0; i != 10; ++i)

intstack.push(i);

while(!intstack.empty())

//佇列介面卡queue

容器 順序容器

容器 include include include 容器元素型別必須滿足 1.支援賦值運算 2.物件可以複製 而io庫型別這兩個都不支援,因此,不能建立存放io型別物件的容器 容器的容器 記得加空格 list vector a list容器迭代器不支援演算法運算 也不支援關係運算 等,它只有自增,...

容器 順序容器 關聯容器

容器分為 順序容器 關聯容器,示意圖如下 順序容器 只儲存值,關聯容器 key value形式,關聯容器的乙個元素包含兩個部分 鍵值對 key value 有序容器 底層實現為紅黑樹,即容器內的key是有序的 無序容器 底層實現為hash table,雜湊表 區別 順序容器通過元素在容器中的位置順序...

stl容器之順序容器

stl容器分為順序容器和關聯容器 其中順序容器最常用的由vector,list,queue 1.vector vector 向量容器,可以看作變長陣列,長度可根據需要自行變化。使用的標頭檔案 include 定義方式 vector陣列名 vectorar 訪問容器內資料的方式和普通陣列相同,可以用a...