溫習一下stl的traits技法

2021-06-28 23:04:54 字數 1931 閱讀 5365

//五種迭代器型別

struct input_iterator_tag{};

struct output_iterator_tag{};

struct forward_iterator_tag:public input_iterator_tag{};

struct bidirectional_iterator_tag:public forward_iterator_tag{};

struct random_access_iterator_tag:public bidirectional_iterator_tag{};

//迭代器基類std:iterator,原生指標不需要使用者定義

templateclass interator

;//traits

templatestruct iteretor_traits

;//原生指標的traits偏特化版本

templatestruct iteretor_traits;

//const原生指標的traits偏特化版本

templatestruct iteretor_traits;

//獲取迭代器型別

templateinline typename iteretor_traits::iterator_category

iterator_category(const iterator&)

//獲取迭代器的distance type

templateinline typename iteretor_traits::diferrence_type*

diferrence_type(const iterator&)

//獲取迭代器的value_type

templateinline typename iteretor_traits::value_type

diferrence_type(const iterator&)

//distance函式

templateinline typename iteretor_traits::diferrence_type

_distance(inputiterator first, inputiterator second, input_iterator_tag)

return n;

}templateinline typename iteretor_traits::diferrence_type

_distance(randomaccessiterator first, randomaccessiterator second, random_access_iterator_tag)

templateinline typename iteretor_traits::diferrence_type

distance(inputiterator first, inputiterator second, input_iterator_tag)

//advance函式

templateinline void _advance(inputiterator first, distance n, input_iterator_tag)

templateinline void _advance(inputiterator first, distance n, bidirectional_iterator_tag)

templateinline void _advance(randomaccessiterator first, distance n, random_access_iterator_tag)

templateinline void distance(inputiterator first, distance n, input_iterator_tag){

return _advance(first, n, iterator_category(first));

摘自stl原始碼剖析

重新溫習一下CMM標準定義

不求生搬硬套,但求不斷提高 2 標準劃分 摘自 使用軟體工程 cmm將軟體分為5個等級 1 初始級 initial 工作無序,專案進行過程中常放棄當初的規劃 管理無章,缺乏健全的管理制度 開發專案的成效不穩定,產品的效能和質量依賴於個人能力和行為。2 可重複級 repeatable 管理制度化,建立...

traits技術,乙個簡單的例子(STL)

stl標準模板庫非常強調軟體的復用,traits技術是非常重要的,traits是特性的意思,就像,特徵萃取機,提取不同類的共性,以便能統一處理。traits依靠顯式模板特殊化,把 中因不同型別不同而發生變化的片段,拖出來,用統一的介面來包裝。這個介面,可以包含乙個c 類所能包含的任何東西,如內嵌函式...

STL初步 見識一下sort函式

stl初步 見識一下sort函式 還沒有接觸c 的時候,我做的一些演算法題如果包含有排序的問題,我一般都是用選擇排序法或者氣泡排序法來解決,但是學習了c 後,我知道了還有stl也就是c 的標準模板庫裡面的函式我是可以直接使用的。想要了解stl需要先明白c 的模板是什麼含義。include using...