c 中迭代器與幾種簡單的演算法

2021-08-13 17:17:33 字數 1911 閱讀 7790

容器container是個class template;

演算法algorithm是個function template;

迭代器iterator是個class template;

仿函式function是個class template;

介面卡adapter是個class template;

分配器allocator是個clsaa template;

algorithm看不見containers,對其一無所知;所以,它所需要的一些資訊都必須從iterators取得,而iterators(由containers**)必須能夠回答algorithm的所有提問,才能搭配該algorithm的所有操作。

//stl庫中演算法的形式

templateiterator>

algorithm(iterator itr1,iterator itr2)

//或templateiterator,template cmp>

algorithm(iterator itr1,iterator itr2,cmp comp)

//五種iterator category

struct input_iterator_tag{};

struct output_iterator_tag{};

struct forword_iterator_tag:public input_iterator_tag{};

struct bidirectional_iterator_tag:public forward_iterator_tag{};

struct random_access_iterator_tag:public bidirectional_iterator_tag{};

template

t accumulate(inputiterator first, inputiterator last, t init)

//通常演算法有兩個版本

template

t accumulate(inputiterator first, inputiterator last, t init, binaryoperation binary_op)

演算法 for_each:既在一段範圍內對每乙個元素做一件制定的事情(形式如下)

t for_each(inputiterator first, inputiterator last, function f)

3.演算法replace,replace_if,replace_copy這裡簡單的寫了乙個replace演算法的**:

t replace(inputiterator first, inputiterator last, const t& old_value,

const t& new_value)

4.演算法count,count_if

typename iterator_traits::difference_type

count(inputiterator first, inputiterator last, const t& value)

5.演算法find,find_if

find(inputiterator first, inputiterator last, const t& value)

注意:容器array、vector、list、forward_list、deque而言他們自身是不帶成員函式count()、find()的;但是容器set/multiset、map/multimap、unordered_set/unordered_multiset、unordered_map/unorderd_multimap而言他們自身的成員函式中帶有count()、find()。

注意:容器list、forward_list的成員函式中帶有sort()。

c 迭代器的簡單使用

begin end。begin指向首元素 end指向尾元素後邊的位址 vectorvec1 for auto it vec1.begin it vec1.end it 迭代器型別 iterator vectorvec2 vector iterator it vector iterator is fo...

C 迭代器的簡單使用

此文為閱讀筆記,內容基本出自書中。使用下標訪問物件的成員的最基本方法有三種 string物件的字元訪問,vector物件的元素訪問,迭代器。迭代器類似於指標型別,也提供了對物件的間接訪問。使用迭代器可以訪問某個元素,也能從乙個元素移動到另外乙個元素。迭代器分為有效和無效,有效的迭代器或者指向某個元素...

C 中的迭代器

迭代器iterator,它是指標的泛化形式,每種迭代器只能用於它自己的容器類。1 前遞增和後遞增操作符 將迭代器跳到下乙個資料項 2 前遞減和後遞減操作符 將迭代器跳到上乙個資料項 3 相等操作符 和不相等操作符!測試兩個迭代器是否指向同乙個位置 4 提領操作符 加入p是迭代器變數,使用 p就能訪問...