容器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就能訪問...