成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++迭代器基本內(nèi)容講述

開(kāi)發(fā) 后端
在C++編程語(yǔ)言中,每種容器都會(huì)定義自己的C++迭代器的類型。我們將會(huì)在這里為大家詳細(xì)介紹一下這方面的基本內(nèi)容。

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

 

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

 

容器的 iterator 類型

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

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

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

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

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

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

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

*iter = 0;

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

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

示例程序:編寫(xiě)程序來(lái)創(chuàng)建有10個(gè)元素的vector對(duì)象

  1. #include <iostream> 
  2. #include <vector> 
  3. using namespace std;int main()  
  4. {   
  5. //定義并賦值輸出   
  6. vector<int> ivec;   
  7. cout<<"Befort *2 the elements are:"<<endl;   
  8. for(vector<int>::size_type ix=0;  
  9. ix!=10;++ix){ ivec.push_back(ix);   
  10. cout<<ivec[ix]<<'\t';   
  11. }   
  12. //把每個(gè)值乘以2并輸出   
  13. cout<<endl<<"After *2 the elements are:"<<endl;   
  14. for(vector<int>::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)容的介紹。

責(zé)任編輯:曹凱 來(lái)源: 博客園
相關(guān)推薦

2010-02-05 10:08:55

C++名字空間

2010-02-06 13:58:13

C++ Bost庫(kù)

2010-02-02 15:12:09

C++ explici

2010-02-03 15:06:02

C++可變參數(shù)表

2010-02-05 13:35:19

C++虛析構(gòu)函數(shù)

2010-01-04 15:21:37

Silverlight

2009-09-10 10:47:05

C# form

2010-02-01 14:07:12

C++多態(tài)性

2010-02-25 15:49:05

WCF消息模式

2010-03-02 15:53:02

WCF服務(wù)合同

2017-10-25 06:50:27

數(shù)據(jù)科學(xué)數(shù)據(jù)數(shù)據(jù)分析

2010-02-25 17:51:04

WCF服務(wù)地址

2010-03-05 11:53:20

Python命名約定

2010-02-04 15:58:39

C++淺拷貝

2010-02-05 17:34:37

C++函數(shù)模板

2010-01-28 15:33:37

Android程序架構(gòu)

2010-04-22 09:36:56

Oracle數(shù)據(jù)字典

2010-03-02 17:55:37

WCF終結(jié)點(diǎn)地址

2010-03-03 15:26:54

Python編碼規(guī)范

2010-01-21 13:33:44

C++基類
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 黑人巨大精品欧美一区二区免费 | 欧美日韩国产一区 | 免费激情 | 日本午夜在线视频 | 久久手机视频 | 国产日韩免费观看 | 日日夜夜av | 二区三区在线观看 | 蜜桃臀av一区二区三区 | 天天干在线播放 | 中文字幕欧美一区 | 婷婷色综合 | 在线国产一区二区 | 欧美xxxx网站 | 可以免费看的毛片 | av黄色免费| 久久久久久久久久久国产 | 亚洲精品第一页 | 日本免费在线看 | 自拍偷拍第1页 | 免费在线一区二区 | 国产精品欧美一区二区三区不卡 | 五月婷婷激情 | 欧美影院 | 在线一级片 | 亚洲影音 | 精品成人 | 亚洲一区二区三区免费 | 欧美一级黄色网 | 天堂一区二区三区四区 | 久草视频观看 | 一区二区三区四区在线播放 | 午夜免费在线 | 欧美专区日韩专区 | 一区二区三区免费 | 五月槐花香 | 我要看免费一级毛片 | 国产99精品| 亚洲巨乳自拍在线视频 | 国产精品久久一区二区三区 | 国产精品美女一区二区 |