我們今天在這裡為大家介紹的是c++迭代器的一些基本概念,希望大家可以從這篇文章中學到一些有用的內容,從而提高自己的程式設計效率。首先我們要清楚,c++迭代器是一種檢查容器內元素並遍歷元素的資料型別。
標準庫為每一種標準容器(包括 vector)定義了一種迭代器型別。迭代器型別提供了比下標操作更通用化的方法:所有的標準庫容器都定義了相應的迭代器型別,而只有少數的容器支援下標操作。因為迭代器對所有的容器都適用,現代 c++ 程式更傾向於使用迭代器而不是下標操作訪問容器元素,即使對支援下標操作的 vector 型別也是這樣。
容器的 iterator 型別
每種容器型別都定義了自己的c++迭代器型別,如 vector:vector::iterator iter;這符語句定義了乙個名為 iter 的變數,它的資料型別是 vector定義的 iterator 型別。每個標準庫容器型別都定義了乙個名為 iterator 的成員,這裡的 iterator 與迭代器實際型別的含義相同。
begin 和 end 操作每種容器都定義了一對命名為 begin 和 end 的函式,用於返回迭代器。如果容器中有元素的話,由 begin 返回的迭代器指向第乙個元素: vector::iterator iter = ivec.begin();
上述語句把 iter 初始化為由名為 vector 操作返回的值。假設 vector 不空,初始化後,iter 即指該元素為ivec[0]。
由 end 操作返回的c++迭代器指向 vector 的「末端元素的下乙個」。「超出末端迭代器」(off-the-end iterator)。表明它指向了乙個不存在的元素。如果 vector 為空,begin 返回的迭代器與 end 返回的迭代器相同。
由 end 操作返回的迭代器並不指向 vector 中任何實際的元素,相反,它只是起乙個哨兵(sentinel)的作用,表示我們已處理完 vector 中所有元素。
vector 迭代器的自增和解引用運算
c++迭代器型別定義了一些操作來獲取迭代器所指向的元素,並允許程式設計師將迭代器從乙個元素移動到另乙個元素。迭代器型別可使用解引用操作符(dereference operator)(*)來訪問迭代器所指向的元素:
*iter = 0;
解引用操作符返回迭代器當前所指向的元素。假設 iter 指向 vector 物件 ivec 的第一元素,那麼 *iter 和ivec[0] 就是指向同乙個元素。上面這個語句的效果就是把這個元素的值賦為 0。迭代器使用自增操作符(1.4.1 節)向前移動迭代器指向容器中下乙個元素。從邏輯上說,c++迭代器的自增操作和int 型物件的自增操作類似。對 int 物件來說,操作結果就是把 int 型值「加 1」,而對迭代器物件則是把容器中的迭代器「向前移動乙個位置」。因此,如果 iter 指向第乙個元素,則 ++iter 指向第二個元素。
由於 end 操作返回的迭代器不指向任何元素,因此不能對它進行解引用或自增操作。
示例程式:編寫程式來建立有10個元素的vector物件
#include<iostream
>
#include<vector
>
using namespace std;int main()//把每個值乘以2並輸出
cout<
<
endl
<
<
"after *2 the elements are:"<
<
endl
;
for(vector<
int>
::iterator iter
=ivec
.begin();
iter!=ivec.end();++iter)
return 0;
}
python 基本內容
1.包 import 模組名 這個包首先在當前目錄找。每個模組中可以用 name 判斷是否為 main 來執行程式 建立包pack,建立乙個資料夾然後建立 init py import pack.filename pack.filename.f 引用包重新命名 import pack as newn...
Servlet基本內容
常用的狀態碼如下 200 請求成功。302 請求重定向。304 請求資源沒有改變,訪問本地快取。404 請求資源不存在。通常是使用者路徑編寫錯誤,也可能是伺服器資源已刪除。500 伺服器內部錯誤。通常程式拋異常。狀態資訊 狀態資訊是根據狀態碼變化而變化的 1 servlet技術 2 filter技術...
php基本內容
1.注釋 或者 name admin echo hello name 2.變數 以 開頭 name admin echo hello name 3.字串拼接 使用 name admin echo hello name 4.物件訪問屬性 使用 class obj o newobj echo o nam...