C++標準庫vector及迭代器【轉】
(轉自:https://blog.csdn.net/zhy_cheng/article/details/8041940?utm_source=blogxgwz46)
vector是同一種物件的集合,每個物件都有一個對應的整數索引值。和string物件一樣,標準庫將負責管理與儲存元素相關的類存。
引入標頭檔案#include<vector>
1.vector物件的定義和初始化
vector<T> v1 vector儲存型別為T的物件。預設建構函式,v1為空 vector<T> v2(v1) v2是v1的一個副本 vector<T> v3(n,i) v3包含n個值為i的元素 vector<T> v4(n) v4含有值初始化的元素的n個副本
如果沒有指定元素的初始化式,那麼標準庫將自行提供一個元素初始值進行值初始化。這個由庫生成的初始值將用來初始化容器中的每個元素,具體的值為何,取決於儲存在vector中元素的資料型別。
如果vector儲存內建型別如int,那麼標準庫將用0值建立元素初始化式
vector<int> vv(10); //10個元素,每個被初始化為0
如果vector儲存的是含有建構函式的類型別的元素,標準庫將用該型別的預設的建構函式建立元素的初始化式
vector<string> vvvv(10) //10個元素,每個被初始化為空字串
還有第三種情況,元素型別可能是沒有定義建構函式的類型別。這種情況下,標準庫仍產生一個帶初始值的物件,這個物件的每個成員進行了值初始化。
2.vector物件的操作
幾種重要的操作 v.empty() 如果v為空,則返回true,否則返回false v.size() 返回v中元素的個數 v.push_back() 在v的末尾增加一個值為t的元素 v[n] 返回v中位置為n的元素 v1=v2 把v1中的元素替換為v2中元素的副本 v1==v2 如果v1與v2相等,則返回true !=,<,<=,>,>= 保持這些操作符慣有含義
size()返回相應vector類定義的size_type的值。
vector::size_type //error
vector<int>::size_type //ok
push_back()函式將新元素新增到vector最後面。
3.迭代器簡介
除了使用下標來訪問vector物件的元素外,標準庫還提供了訪問元素的方法:使用迭代器。迭代器是一種檢查容器內元素並且遍歷元素的資料型別。
1.容器的iterator型別
每種容器型別都定義了自己的迭代器型別,如vector:
vector<int> ::iterator iter;變數名為iter。
2.begin和end操作
每種容器都定義了一隊命名為begin和end的函式,用於返回迭代器。如果容器中有元素的話,由begin返回的元素指向第一個元素。
vector<int>::iterator iter=v.begin();
若v不為空,iter指向v[0]。
由end返回的迭代器指向最後一個元素的下一個,不存在,若v為空,begin和end返回的相同。
*iter=0;
iter++即將迭代器向前移動一個位置
即將v[0]賦值為0,由end返回的不允許進行解操作。
==和!=操作符來比較兩個迭代器,若兩個迭代器指向同一個元素,則它們相等,否則不想等。
迭代器使用舉例:
for(vector<int>::iterator iter=v.begin();iter!=v.end();iter++)
*iter=0;
將vector中的元素全部賦值為0;
---------------------
作者:臨江仙
來源:CSDN
原文:https://blog.csdn.net/zhy_cheng/article/details/8041940
版權宣告:本文為博主原創文章,轉載請附上博文連結!