三種:vector,list,queue
基礎:陣列,鍊錶,陣列
支援函式:front,back,push_back,pop_back
可以動態的改變它的大小,可以彼此賦值,但陣列表示位址常量就沒這功能。
vector就像陣列一樣,是連續的。在末尾插入非常高效,中間就不行。
要想經常在兩端插入刪除,最好用queue,它比vector好。
有對vector操作的函式也有它對應的迭代器。
1.vector和迭代器
1.size和capacity用法:
vector
integers;
cout
<< integers.size() << endl;//0
cout
<< integers.capacity() << endl;//0
integers.push_back(1);
integers.push_back(2);
integers.push_back(4);
cout
<< integers.size() << endl;//3
cout
<< integers.capacity() << endl;//4
原因:size是當前存放元素個數;capacity是成倍增長的,如:1,2,4,8,16,32…..這回造成空間浪費。所以,一般都手動初始化乙個較大的容量。用resize和reserve控制空間。
2.使用迭代器遍歷
#include
#include
using
namespace
std;
template
void printvector(const
vector
&);----------
main:
----------
template
void printvector(const
vector
& interges)
}的返回值是乙個迭代器(相當於指標)
3.使用迭代器反向遍歷
#include
#include
using
namespace
std;
template
void rprintvector(const
vector
&);----------
main:
----------
template
void rprintvector(const
vector
& interges)
}
以上的iterator,const_iterator,const_reverse_iterator都屬於常用的迭代器,一般的容器中都有這些。
2.操作vector的函式
1.初始化vector元素
指向陣列的指標可以作為迭代器,實參是兩個迭代器,從arry開始,到arry+size範圍內所有元素(最後乙個不包含)
int size=6;
int arry[size]=;
vector
interges(arry,size+arry);
vector
interges=;//初始化為1,2,3
vector
interges1(interges);//拷貝
vector
interges(10);//生成乙個向量,且裡有10個數,且初值為0;
vector
interges[10];//生成10組向量,每個向量的size為0
2.copy函式和ostream_iterator迭代器輸出
定義輸出迭代器物件output,它只輸出int型變數,建構函式第乙個實參指定輸出流,第二個引數指定出輸出值的分隔符;
copy過程,從第乙個迭代器指定位置開始,到第二個結束(不包括那個位置的),把這些位置的元素都複製到後乙個實參的輸出迭代器中。
ostream_iteratoroutput(cout,' ');//ostream_iterator在標頭檔案中,output這個物件連線到了cout
copy(interges.begin(),interges.end(),output);//包含在中
3.front,back函式以及begin,end函式
front函式返回vector中第乙個元素的引用;
begin函式返回乙個隨機訪問迭代器,指向vector中第乙個元素;
cout<<*interges.begin();
cout<.front();
4.at函式
下標訪問的功能,同時判斷是否超出邊界,若超出邊界,at函式會丟擲out_of_bounds異常。
integers.at(10);//這個異常在標頭檔案中。
5.insert函式
把第二個實參插到第乙個實參中指定位置元素之前。
這裡的迭代器指向vector的第二個元素,因此22就變成第二個元素了,其他的往後串。
integers.insert(interges.begin()+1,22);
6.erase函式
刪除指定位置的元素,或者指定一段的元素
intergers.erase(integers.begin());
intergers.erase(integers.begin(),integers.end());
STL學習筆記 4 序列式容器之vector
常見的資料結構 array陣列,list鍊錶,tree樹,stack棧,queue佇列,hash table雜湊表,set集合,map對映 根據資料在容器中的排列分為 序列式sequence和關聯式associative。序列式容器之vector array是靜態空間,一旦配置則無法改變 vecto...
STL原始碼分析3 序列式容器
喜歡這篇文章嗎?喜歡的話去看博主的置頂部落格,即可依據分類找到此文章的原版得到更好的體驗,title stl原始碼分析3 序列式容器 mathjax true date 2020 03 24 20 39 33 categories c 筆記,stl原始碼分析 tags c 筆記,stl原始碼分析 k...
《STL原始碼剖析》讀書筆記 (2)序列式容器
第四章 序列式容器 總體概述如下 vector 實現的底層實現物件是陣列,list 底層實現物件是雙向迴圈列表,deque 是雙端開頭的連續線性空間 實現起來比較麻煩 stack 和queue 是配接器,底層可以有 list deque queued 的預設實現是 deque 來實現。1.vecto...