C++語言
-
迭代器、
- 迭代器是以一種遍歷容器內元素的資料型別、類似于指標、
- 迭代器、指向容器中的某個元素、常用迭代器訪問容器中的元素、和修改迭代器所指向的元素值、
-
容器的迭代器型別、
-
定義迭代器、
-
vector<int> a = { 1,2,3,4,5,6,7 }; vector<int>::iterator b;//定義迭代器、 -
b、便是迭代器、vector
::iterator 是迭代器的型別、專門在迭代器中使用的型別、不可更改、
-
-
-
迭代器begin()/end()操作、反向迭代器rbegin()/rend()操作、
-
begin()/end() 函式 作用回傳迭代型別、
-
begin()回傳一個迭代器型別、(回傳一個迭代器)
-
vector<int> a = { 1,2,3,4,5,6,7 }; vector<int>::iterator b;//b是迭代器、 b = a.begin(); -
如果容器內有元素、則回傳指向容器中的第一個元素、
-
-
end()回傳一個迭代器型別、
-
vector<int> a = { 1,2,3,4,5,6,7 }; vector<int>::iterator b;//定義迭代器、 b = a.begin(); b = a.end(); -
end回傳的是迭代器是指向末端元素的后面、也就是一個不存在的元素、
-
如果容器內為空的話、那么begin()h和end()回傳的迭代器就相同、end相當于一個結束標記、迭代器遍歷容器內容的話、會從begin開始、直到遇到end便提示遍歷結束、
-
迭代器可以自加加、正向迭代器、從前往后讀、
-
vector<int> a = { 1,2,3,4,5,6,7 }; for (vector<int>::iterator b=a.begin();b!=a.end();b++) { cout << *b << endl;//*b迭代器運算子、 }
-
-
-
-
rbegin()/rend()也是函式、作用是范圍迭代型別、從后往前讀、
-
反向迭代器定義、
-
vector<int> a = { 1,2,3,4,5,6,7 }; vector<int>::reverse_iterator b;//定義迭代器、 -
使用、
-
for (vector<int>::reverse_iterator b=a.rbegin();b!=a.rend();b++) { cout << *b << endl; }
-
-
-
-
迭代器運算子、
-
*b; 回傳迭代器b所指向的參考、須保證迭代器指向有效的容器元素、不能指向end、因為end指向的是不存在的內容、
-
b++或者++b指向的是容器中的下一個元素、而— —b或者b - -則指向的是容器中的上一個元素、
-
參考結構體中的成員、
-
struct a { int f; }; vector<a>b; a c; c.f = 10; b.push_back(c); vector<a>::iterator e;//必須指向有效的元素、 e = b.begin();//指向第一個元素 cout << (*e).f << endl;//參考c的結構內容、或者使用 cout << e->f << endl;//使用指向運算子、 -
將物件賦值到容器中、使用的并不是同一段記憶體、
-
-
兩個迭代器可以相減、相減代表的兩個迭代器的距離、元素的距離、
-
-
const_iterator迭代器、
- const——常量、值不可以被改變、
- const_iterator迭代器表示的是這個迭代器所指向的元素值不能被改變、而非本迭代器本身不能改變、迭代器的本身可以改變、但指向可以變成常量而不改變
- 使用const_iterator后迭代器就會變成只讀、
- 常量容器必須使用常量迭代器、
-
vector<int> a = { 1,2,3,4,5,6,7 }; for (vector<int>::const_iterator b=a.begin();b!=a.end();++b) { cout << *b << endl; } -
cbegin()和cend()操作、
- 和begin\end類似、不過cbegin和cend回傳的都是常量迭代器、
-
迭代器失效、
- 在使用容器的回圈體中、不要改變容器的容量、任何容器都不要增加和洗掉內容、
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/148794.html
標籤:其他
下一篇:2進制常數怎么表示
