順序容器vector 用法1

2021-07-05 06:42:33 字數 2255 閱讀 8949

vector

vector

::size_type a1;//1

vector

::iterator a2;//2

vector

::const_iterator a3;//3

vector

::reverse_iterator a4;//4

vector

::const_reverse_iterator a5;//5

vector

::difference_type a6;//6

1-在訪問vector內元素時,如果用下面這種方式

for(int i = 0; i

< a.

size(); ++i)

cout << a[i]

<< endl;

可以完成任務,但是存在乙個隱藏的危險,我們並不知道vector裡到底存放了多少個元素,有可能超過了int的範圍,所以int i 是有可能不夠的,此時,最好將i定義成size_type型別,如下:

for(vector

::size_type i = 0; i < a.size(); ++i)

cout

<< a[i] << endl;

2-vector的迭代器iterator,迭代器是所有順序容器的類似於指標類的索引,可以利用迭代器訪問容器中的元素,如下:

vector

a;a.push_back(10);

a.push_back(20);

a.push_back(30);

vector

::iterator firsta = a.begin();

vector

::iterator enda = a.end();

cout

<< "正序"

3-const_iterator常量迭代器,只適用於const vector表示這個容器只能訪問不能做增刪改操作,要訪問常向量容器,只能用此迭代器,如下:

const

vector

ca; //資料不能改

ca.push_back(10); //錯誤

ca.push_back(20); //錯誤

ca.push_back(30); //錯誤

const

vector

ca(a); //通過

for(vector

::const_iterator iter = ca.begin();

iter != ca.end();

++iter)

4-reverse_iterator 反向迭代器,反序訪問順序容器

vector

::reverse_iterator rfirsta = a.rbegin();

vector

::reverse_iterator rlasta = a.rend();

while(rfirsta != rlasta)

注意:a.rbegin()指向向量容器的最後乙個元素,a.rend()指向向量容器的第乙個元素的前乙個位置,當逆序訪問元素時,要將迭代器自增,因為對反向迭代器來說從a.rbegin()到a.rend()就是遞增的過程,不是遞減。

5-const_reverse_iterator常量逆迭代器

6-difference_type 迭代器位置之差,能得到兩個迭代器標記的為之間元素的個數,如下:

//10,20,30

vector

::iterator firsta = a.begin();//第乙個位置

vector

::iterator enda = a.end();//最後乙個元素的下乙個位置

vector

::difference_type dif ;//差

dif = enda - firsta;

cout

<< dif--enda;

dif = enda - firsta;

cout

<< dif--enda;

dif = enda - firsta;

cout

<< dif

順序容器 vector

一 底層實現 vector就是動態陣列.它也是在堆中分配記憶體,元素連續存放,有保留記憶體,如果減少大小後,記憶體也不會釋放.如果新值 當前大小時才會再分配記憶體.它擁有一段連續的記憶體空間,並且起始位址不變,因此它能非常好的支援隨即訪問,即操作符,但由於它的記憶體空間是連續的,所以在中間進行插入和...

順序容器vector

vector的關鍵在於其對大小的控制以及重新配置時的資料搬移效率。由於vector維護的是乙個連續線性空間,所以不論元素類別,普通指標都可以作為vector的迭代器而滿足必要條件,包括隨機訪問 操作符 等操作行為。vector提供的是random access iterators。typedef v...

順序容器 vector

vector與array非常相似,唯一的區別在於靈活性,陣列是靜態空間,一旦定義就不能改變,變大變小都需要客戶端自己重新配置新的空間,然後將元素從舊址搬到新址,再把原來的空間還給系統。vector是動態空間,隨著元素的加入,他的內部機制會自行擴充空間以容納新元素。1.vector的底層實現 vect...