日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C++迭代器基本內(nèi)容講述

我們今天在這里為大家介紹的是C++迭代器的一些基本概念,希望大家可以從這篇文章中學(xué)到一些有用的內(nèi)容,從而提高自己的編程效率。首先我們要清楚,C++迭代器是一種檢查容器內(nèi)元素并遍歷元素的數(shù)據(jù)類型。#t#

成都創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都做網(wǎng)站、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元廬山做網(wǎng)站,已為上家服務(wù),為廬山各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575

標(biāo)準(zhǔn)庫為每一種標(biāo)準(zhǔn)容器(包括 vector)定義了一種迭代器類型。迭代器類型提供了比下標(biāo)操作更通用化的方法:所有的標(biāo)準(zhǔn)庫容器都定義了相應(yīng)的迭代器類型,而只有少數(shù)的容器支持下標(biāo)操作。因為迭代器對所有的容器都適用,現(xiàn)代 C++ 程序更傾向于使用迭代器而不是下標(biāo)操作訪問容器元素,即使對支持下標(biāo)操作的 vector 類型也是這樣。

容器的 iterator 類型

每種容器類型都定義了自己的C++迭代器類型,如 vector:vector::iterator iter;這符語句定義了一個名為 iter 的變量,它的數(shù)據(jù)類型是 vector 定義的 iterator 類型。每個標(biāo)準(zhǔn)庫容器類型都定義了一個名為 iterator 的成員,這里的 iterator 與迭代器實際類型的含義相同。

begin 和 end 操作每種容器都定義了一對命名為 begin 和 end 的函數(shù),用于返回迭代器。如果容器中有元素的話,由 begin 返回的迭代器指向***個元素: vector::iterator iter = ivec.begin();

上述語句把 iter 初始化為由名為 vector 操作返回的值。假設(shè) vector 不空,初始化后,iter 即指該元素為ivec[0]。

由 end 操作返回的C++迭代器指向 vector 的“末端元素的下一個”。“超出末端迭代器”(off-the-end iterator)。表明它指向了一個不存在的元素。如果 vector 為空,begin 返回的迭代器與 end 返回的迭代器相同。

由 end 操作返回的迭代器并不指向 vector 中任何實際的元素,相反,它只是起一個哨兵(sentinel)的作用,表示我們已處理完 vector 中所有元素。

vector 迭代器的自增和解引用運(yùn)算

C++迭代器類型定義了一些操作來獲取迭代器所指向的元素,并允許程序員將迭代器從一個元素移動到另一個元素。迭代器類型可使用解引用操作符(dereference operator)(*)來訪問迭代器所指向的元素:

*iter = 0;

解引用操作符返回迭代器當(dāng)前所指向的元素。假設(shè) iter 指向 vector 對象 ivec 的***元素,那么 *iter 和ivec[0] 就是指向同一個元素。上面這個語句的效果就是把這個元素的值賦為 0。迭代器使用自增操作符(1.4.1 節(jié))向前移動迭代器指向容器中下一個元素。從邏輯上說,C++迭代器的自增操作和int 型對象的自增操作類似。對 int 對象來說,操作結(jié)果就是把 int 型值“加 1”,而對迭代器對象則是把容器中的迭代器“向前移動一個位置”。因此,如果 iter 指向***個元素,則 ++iter 指向第二個元素。

由于 end 操作返回的迭代器不指向任何元素,因此不能對它進(jìn)行解引用或自增操作。

示例程序:編寫程序來創(chuàng)建有10個元素的vector對象

 
 
 
  1. #include  
  2. #include  
  3. using namespace std;int main()  
  4. {   
  5. //定義并賦值輸出   
  6. vector ivec;   
  7. cout<<"Befort *2 the elements are:"<
  8. for(vector::size_type ix=0;  
  9. ix!=10;++ix){ ivec.push_back(ix);   
  10. cout<
  11. }   
  12. //把每個值乘以2并輸出   
  13. cout<
  14. for(vector::iterator iter=ivec.begin();  
  15. iter!=ivec.end();++iter)  
  16. {   
  17. *iter*=2; cout<<*iter<<'\t';   
  18. }   
  19. return 0;  

以上就是C++迭代器相關(guān)內(nèi)容的介紹。


網(wǎng)頁標(biāo)題:C++迭代器基本內(nèi)容講述
分享地址:http://www.dlmjj.cn/article/cocieei.html