標準庫函式begin和end的使用

2021-10-25 16:04:03 字數 894 閱讀 2433

除了使用下標運算子來訪問string物件的字元或vector等容器物件的元素外,還有另外一種更通用的機制也可以實現同樣的目的,這就是迭代器。

所有的標準庫容器都可以使用迭代器,但是只有少數幾種才同時支援下標運算子。嚴格來說,string物件不屬於容器型別,但是string支援很多與容器型別類似的操作。

類似指標型別,迭代器也提供了對物件的間接訪問。就迭代器而言,其物件是容器中的元素或者string物件中的字元。使用迭代器可以訪問某個元素,迭代器也能從乙個元素移動到另外乙個元素。

在c++05中對於string類和各種容器類(如vector等)新增了t.begin()和t.end()兩個成員函式,分別返回指向首元素的迭代器和尾後元素的迭代器。但是對於復合型別陣列卻一直只能用指標和陣列元素位址來實現。

vector<

int> test =

;auto tbeg = test.

begin()

, tend = test.

end();

while

(tbeg != tend)

cout << endl;

為了統一string類和容器類與陣列的操作,c++11引入了庫函式begin()和end(),在iterator標頭檔案中定義。這兩個庫函式與容器中的兩個同名成員函式功能類似,不過陣列畢竟不是類型別,因此這兩個庫函式不是成員函式,正確的使用形式是將陣列作為它們的引數:

int s=

;auto

*sbeg =

begin

(s);

auto

*send =

end(s)

;while

(sbeg != send)

cout << endl;

C 11標準庫中的begin 和end 函式

先上 int ia int beg begin ia int last end ia 上面 中begin 返回的是陣列首元素的指標,end 返回的是尾元素的下一位置的指標。這是c 11 為我們提供的兩個非常方便的定位陣列指標的函式。有什麼好處?我想到了以前常用的一種計算陣列元素個數的方法 typed...

C 標準庫中 用於陣列的begin和end函式

c 標準庫中用於陣列的begin和end函式 include include begin和end函式定義在iterator檔案中 using namespace std int ia int beg begin ia begin函式返回指向ia首元素的指標,end函式返回指向ia尾元素下一位置的指標...

(2)BEGIN和END語句塊

awk的所有 目前這麼認為 都是寫在語句塊中的。例如 root docker 01 awk a.txt root docker 01 awk a.txt 每個語句塊前面可以有pattern,所以格式為 pattern1pattern2 語句塊可分為3類 begin語句塊 end語句塊和main語句塊...