C 用for遍歷自定義類

2021-10-06 10:53:14 字數 977 閱讀 4422

正確的做法是像stl容器那樣,建立乙個迭代器類,然後裡面過載!=(比較), ++(遞增),*(解引用)這幾個函式。

例如:

template

<

class

t>

class

iterator

bool

operator!=(

const iterator& that)

iterator&

operator++(

) t&operator*(

)iterator

(const iterator&)=

delete

; iterator&

operator=(

const iterator&)=

delete;~

iterator()

=default

;}

光是這樣還不夠,還得在我麼要遍歷的類中新增begin和end兩個函式,begin和end返回什麼呢?我給大家舉個例子,乙個陣列char a[5],begin代表了第乙個元素,即a[0], end代表最後乙個元素的後一位,即a[5],我們只需要把begin和end函式內返回我們提前指定好這兩個元素的迭代器就行了,例:

classa	

iterator

&end()

}

之後我們就可以使用for (auto& i : ***)遍歷這個型別的變數了,最後和大家說一下,如果begin和end是返回指標的話可以不用迭代器類就可以,因為指標的 !=(比較), ++(自增),*(解引用)這幾個函式都是c++語言內建的。前提是你遍歷的資料是連續記憶體,這樣通過++(自增)獲取的下個值才是正確的,不然你還是得額外寫乙個迭代器類。

C 自定義List類

如下 using system using system.collections.generic using system.linq using system.text namespace myarraylist public myarraylist int capacity 索引器 public ...

C 自定義類排序

1 宣告乙個類 人物類 public class person 2 宣告乙個繼承了介面icomparer的類 比較人物類例項大小,實現介面icomparer public class personcomparer icomparer return 0 3 main函式,建立乙個list,並使用剛建立...

c 自定義string類

1.標頭檔案部分 define crt secure no warnings pragma once include includeusing namespace std class mystring 2.函式定義部分 include mystring.h mystring mystring mys...