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

對C++迭代器工作原理說明介紹

開發 后端
下文主要向大家介紹一下,C++迭代器的工作原理,但在完全了解它復雜的實現細節之前,我們將對C++迭代器的原理進行說明分析一下。

可以對C++迭代器進行自增以及使用解引用操作符來讀取值,但不能對該元素值賦值,因為C++迭代器對所有的容器都適用,現代C++程序更傾向于使用迭代器而不是下標操作訪問容器元素,即使對支持下標操作的vector類型也這樣。

標準庫為每一種標準容器(包括vector)定義了一種迭代器類型。迭代器類型提供了比下標操作更一般化的方法:所有的標準庫容器都定義了相應的迭代器類型,而只有少數的容器支持下標操作。

1. 容器的iterator類型

每種容器類型都定義了自己的迭代器類型,如vector:vector::iterator iter;這條語句定義了一個名為iter的變量,它的數據類型是由vector定義的iterator類型。每個標準庫容器類型都定義了一個名為iterator的成員,這里的iterator與迭代器實際類型的含義相同。

術語:迭代器C++迭代器類型程序員***遇到有關迭代器的術語時可能會困惑不解,產生困惑的原因之一是由于本書中同一個術語iterator表示兩個不同的事物。一般性提及的是迭代器的概念;而特別提及的則是由容器定義的具體的iterator類型,如vector

重點要理解的是,定義了許多用作迭代器的類型,這些類型在概念上是相關的。若一種類型支持一組確定的行為(這些行為允許程序員遍歷容器內的元素,并允許程序員訪問這些元素值)。

我們就稱這種類型為迭代器。不同的容器類定義了自己的iterator類型,用于訪問容器內的元素。換句話說,每個容器定義了一種名為iterator的類型,而這種類型支持(概念上的)迭代器的各種行為。

2. begin和end操作

每種容器都定義了一對命名為begin和end的函數,用于返回迭代器。如果容器中有元素的話,由begin返回的迭代器指向***個元素把iter初始化為由名為begin的vector操作返回的值。假設vector不空,初始化后,iter即指該元素為ivec[0]。

由end操作返回的迭代器指向vector的“末端元素的下一個”。通常稱為超出末端迭代器(off-the-end iterator),表明它指向了一個不存在的元素。如果vector為空,begin返回的迭代器與end返回的迭代器相同。由end操作返回的迭代器并不指向vector中任何實際的元素,相反,它只是起一個哨兵(sentinel)的作用,表示我們已處理完vector中所有元素。

3. C++迭代器的自增和解引用運算

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

假設iter指向vector對象ivec的***個元素,那么*iter和ivec[0]就是指向同一個元素。上面這個語句的效果就是把這個元素的值賦為0。迭代器使用自增操作符(1.4.1節)向前移動迭代器指向容器中下一個元素。從邏輯上說,迭代器的自增操作和int型對象的自增操作類似。

對int對象來說,操作結果就是把int型值“加1”,而對迭代器對象則是把容器中的迭代器“向前移動一個位置”。因此,如果iter指向***個元素,則++iter指向第二個元素。由于end操作返回的C++迭代器不指向任何元素,因此不能對它進行解引用或自增操作。

4.  C++迭代器的其他運算

另一對可執行于迭代器的操作就是比較:用==或!=操作符來比較兩個迭代器,如果兩個迭代器對象指向同一個元素,則它們相等,否則就不相等。

【編輯推薦】

  1. C與C++中標準輸入實現方式上的一點區別
  2. C++編譯器如何對Const常量進行分配存儲空間
  3. C++類庫設計的基本構思與方法
  4. 玩轉C++語言的幾種方法
  5. 如何更好的進行C++代碼編制
責任編輯:chenqingxiang 來源: javaeye.com
相關推薦

2010-01-25 18:19:17

C++特性

2010-01-25 18:19:17

C++特性

2010-01-25 18:19:17

C++特性

2010-01-15 19:34:25

C++設計

2010-01-21 09:26:53

CC++編譯器

2010-01-14 13:39:45

Visual C++優

2010-01-27 14:24:15

C++程序設計

2010-01-19 18:35:12

靜態成員

2010-01-15 15:52:18

CC++

2010-01-15 10:41:06

CC++

2010-01-19 17:54:47

C++程序

2010-01-11 09:56:07

C++編程實例

2010-01-28 16:05:09

C++風格與技巧

2010-01-25 18:26:44

CC++頭文件

2010-01-12 15:46:29

測試C++ Test

2010-01-28 10:01:28

C++的設計原則

2010-01-12 15:56:25

C++軟件

2010-01-13 13:58:49

C++編譯模式

2009-11-13 17:19:10

2010-02-04 15:51:07

C++迭代器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级黄色绿像片 | 国产日韩欧美一区二区 | 日韩中文字幕久久 | 中文一区二区 | 国产在线观看 | 亚洲高清视频在线观看 | 久久国产免费 | 男人的天堂在线视频 | 91成人小视频 | 7777久久 | 性欧美精品一区二区三区在线播放 | 精品国产伦一区二区三区观看说明 | 欧美一级特黄aaa大片在线观看 | 色婷婷亚洲一区二区三区 | 一区二区中文字幕 | 国产精品一区二区精品 | 国产精品99久久久久久动医院 | 久久午夜精品 | 色婷婷一区二区三区四区 | 亚洲一二三区不卡 | 成人久久久久久久久 | 性高朝久久久久久久3小时 av一区二区三区四区 | 国产男女视频网站 | 欧美激情综合五月色丁香小说 | 国产aa | 亚洲日韩中文字幕一区 | 青青草一区二区三区 | 你懂的国产 | 精品免费国产一区二区三区四区介绍 | 精品成人一区二区 | 久久天天躁狠狠躁夜夜躁2014 | 久久久综合久久 | 免费观看黄色一级片 | 日本精品一区 | 久久久久国产精品午夜一区 | 成人激情视频网 | www.4hu影院| 成人不卡视频 | 久久一级大片 | 国产精品一区久久久 | 亚洲电影中文字幕 |