C++之迭代器

迭代器的概念

迭代器是用來訪問string對象或vector對象的元素的,相似於下標運算和指針。數組

其對象是容器中的元素或string對象中的字符;spa

使用迭代器能夠訪問某個元素,迭代器也能從一個元素移動到另一個元素。3d

迭代器的使用

不一樣於指針,獲取迭代器不是使用取地址符,有迭代器的類型同時擁有返回迭代器的成員;指針

好比,這些類型擁有名爲begin和end的成員,begin成員負責返回指向第一個元素(或第一個字符)的迭代器,end成員則負責返回指向容器「尾元素的下一個位置」的迭代器;code

若是迭代器爲空,則begin和end返回的是同一個迭代器;對象

標準容器迭代器的運算符blog

和指針相似,也能經過解引用迭代器來獲取它所指向的元素,執行解引用的迭代器必須合法並確實指向着某個元素。字符串

string  s("some String"); if (s.begin() !=s.end() )  //確保s非空
{ auto it=s.begin(); //it 表示s的第一個字符
   *it=toupper(*it); }

迭代器類型

 begin與end運算符string

結合解引用與成員訪問操做it

 解引用迭代器能夠得到迭代器所指向的對象(相似與指針)。例如:若it是Vector對象的迭代器,

檢查其元素是否爲空,只需檢查it所指向的字符串是否爲空;

(*it).empty();   // it->empty();

某些對vector對象的操做會使迭代器失效

但凡是使用了迭代器的循環體,都不要向迭代器所屬的容器添加元素;

迭代器運算

 

迭代器的算術運算

能夠令迭代器和一個整數值相加(或相減),其返回值是向前(或向後)移動了若干個位置的迭代器。

auto mid = vi.begin() + vi.size() / 2; //vi.size()=10,則mid指向元素是vi[10]
if(it<mid) //處理vi前半部分的元素

使用迭代器運算(二分搜索)

代碼

指針也是迭代器

指向數組元素的指針擁有更多功能

相關文章
相關標籤/搜索