C 標準庫vector以及迭代器

2022-09-04 01:54:06 字數 1808 閱讀 8796

今天看c++的書,出現了乙個新的概念,容器vector以及容器迭代器。

vector是同一種物件的集合,每個物件都有乙個對應的整數索引值。和string物件一樣,標準庫將負責管理與儲存元素相關的類存。引入標頭檔案

#include

1 vectorv1             vector儲存型別為t的物件。預設建構函式,v1為空

2 vectorv2(v1) v2是v1的乙個副本

3 vectorv3(n,i) v3包含n個值為i的元素

4 vectorv4(n) v4含有值初始化的元素的n個副本

如果沒有指定元素的初始化式,那麼標準庫將自行提供乙個元素初始值進行值初始化。這個由庫生成的初始值將用來初始化容器中的每個元素,具體的值為何,取決於儲存在vector中元素的資料型別。

如果vector儲存內建型別如int,那麼標準庫將用0值建立元素初始化式

vectorvv(10);      //10個元素,每個被初始化為0

如果vector儲存的是含有建構函式的類型別的元素,標準庫將用該型別的預設的建構函式建立元素的初始化式

vectorvvvv(10)      //10個元素,每個被初始化為空字串

還有第三種情況,元素型別可能是沒有定義建構函式的類型別。這種情況下,標準庫仍產生乙個帶初始值的物件,這個物件的每個成員進行了值初始化。

幾種重要的操作

1

v.empty() 如果v為空,則返回true,否則返回false

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

3v.push_back() 在v的末尾增加乙個值為t的元素

4v[n] 返回v中位置為n的元素

5 v1=v2 把v1中的元素替換為v2中元素的副本

6 v1==v2 如果v1與v2相等,則返回true

7 !=,<,<=,>,>= 保持這些操作符慣有含義

size()返回相應vector類定義的size_type的值。

vector::size_type             //error

vector::size_type    //ok

push_back()函式將新元素新增到vector最後面。

除了使用下標來訪問vector物件的元素外,標準庫還提供了訪問元素的方法:使用迭代器。迭代器是一種檢查容器內元素並且遍歷元素的資料型別。

每種容器型別都定義了自己的迭代器型別,如vector:

vector::iterator iter;變數名為iter。

每種容器都定義了一隊命名為begin和end的函式,用於返回迭代器。如果容器中有元素的話,由begin返回的元素指向第乙個元素。

vector::iterator iter=v.begin();

若v不為空,iter指向v[0]。

由end返回的迭代器指向最後乙個元素的下乙個,不存在,若v為空,begin和end返回的相同。

*iter=0;

iter++即將迭代器向前移動乙個位置

即將v[0]賦值為0,由end返回的不允許進行解操作。

==和!=操作符來比較兩個迭代器,若兩個迭代器指向同乙個元素,則它們相等,否則不想等。

迭代器使用舉例:

for(vector::iterator iter=v.begin();iter!=v.end();iter++)

將vector中的元素全部賦值為0;

C 標準庫 迭代器

迭代器是乙個 可遍歷stl容器內全部或部分元素 的物件。乙個迭代器用來指出容器中的乙個特定位置。operator 返回當前位置上的元素值 operator 和operator 判斷兩個迭代器是否指向同意位置 operator 為迭代器賦值。因為每個容器選擇的資料結構不同,所以每一種容器都必須提供自己...

C 標準庫型別vector,迭代器使用

要想使用vector,必須包含適當的標頭檔案。include using std vector vector是乙個類模板。vector v1 v1是空得裡面裝的是t型別 vector v2 v1 v2包含v1裡面的所有元素的副本 vector v2 v1 等價v2 v1 vector v3 n,va...

C 標準庫之迭代器

迭代器是對指標進行進一步抽象的產物。迭代器是遍歷所有容器 序列 流的統一介面,是標準庫泛形演算法的基礎。迭代器根據其能力分為五種 category properties valid expressions all categories copy constructible copy assignab...