迭代器的解釋 set和multiset

2021-07-14 21:24:42 字數 2479 閱讀 5002

莫名其妙的,要看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_bound

lower_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...