莫名其妙的,要看stl了
不得不說,stl是乙個優秀的東西。
雖然ta慢……
不過,可以省去好多東西啦。
下面切入正題。。。
迭代器簡單來說就是stl中的位址。是一種複雜的指標。
#include
return
0;}
注意:迭代器的可用基本操作符有 *(取當前迭代器所對應值,和指標一樣),++(類似加等於1,把當前迭代器變為當前迭代器的下乙個迭代器),– –(類似減等於1,把當前迭代器變為當前迭代器的前乙個迭代器),==(邏輯符號),!=(邏輯符號),=(賦值)
是的,ta們實際上是乙個東西,區別在哪呢?
set存入資料時,如果資料重複,會覆蓋。
multiset不會。
(這是老師講的,不對勿噴)
ta們同開乙個庫:#include
函式基本相同。
insert插入,複雜度log(n)
格式:
#include
int main()
還有一種讀入方法
#include
int main()
; std::set
myset(s+1,s+7);
return
0;}
erase刪除,複雜度log(n)
格式:
#include
int main()
find查詢,返回元素迭代器
格式:
#include
int main()
begin容器的首元素(容器中的最小元素)的迭代器
格式:
#include
int main()
end容器結束的迭代器
注:不是容器末元素
格式:
#include
int main()
begin和end並用遍歷容器示例:
#include
#include
int main()
; std::set
myset(s,s+5);
for(std::set
::iterator it=myset.begin();
it!=myset.end();it++)
//因為it是迭代器,所以此處迴圈條件必為!=不能為<
printf(" %d",*it);
return
0;}
size容器元素的個數
格式:
#include
int main()
rbegin和rend反向迭代器
在此定義下,迭代器++操作變為把當前迭代器變為當前迭代器的前乙個迭代器,– –操作同理
rbegin為容器反向首元素,同end
rend為容器反向末元素,同begin
不予舉例
empty是否為空,為空返回true,不為空返回false
不予舉例
count返回當前值在容器中出現的次數
格式:
#include
int main()
lower_bound和upper_boundlower_bound返回第乙個大於等於當前值的元素的迭代器
upper_bound返回第乙個大於當前值的元素的迭代器
時間複雜度和二分相同
不予舉例
啊,終於碼完了,暫時寫到這裡,以後不夠再補充
C 中get和set訪問器的解釋
soriq的部落格 屬性的訪問器包含與獲取 讀取或計算 或設定 寫 屬性有關的可執行語句。訪問器宣告可以包含 get 訪問器或 set 訪問器,或者兩者均包含。宣告採用下列形式之一 get set get 訪問器 get 訪問器體與方法體相似。它必須返回屬性型別的值。執行 get 訪問器相當於讀取欄...
關於set和map迭代器支援的運算
問題 曾經想遍歷乙個set遍歷。當時是這樣寫的 set iterator b a.begin 1後來發現程式報錯。究其原因是,set迭代器不支援加減數操作。檢視了一下維基百科,下面是有關說明 1.所有迭代器都應該實現自增算符 iter iter 2.bidirectional迭代器 是在前向迭代器的...
迭代器和反向迭代器,常量迭代器和非常量迭代器
迭代器的型別共有4種 iiterator,const iterator,reverse iterator,const reverse iterator include include include include using namespace std int main include inclu...