一、accumulate
作用:初始化init,對區間[first,last)的迭代器i執行init += *i或init = binaryop(init,*i)。
template //版本1,用來計算init和[first,last)區間元素的總和
_tp accumulate(_inputiterator __first, _inputiterator __last, _tp __init)
template //版本2,對迭代器中每乙個元素時執行二元操作
_tp accumulate(_inputiterator __first, _inputiterator __last, _tp __init,
_binaryoperation __binary_op)
二、inner_product
作用:初始化init,對區間[first1,last1)和[first2,first2+(last1-first1))的兩個迭代器i和j執行init += *i**j或init = binaryop1(init,binaryop1(*i,*j))。
template //版本1,兩個迭代器元素的內積
_tp inner_product(_inputiterator1 __first1, _inputiterator1 __last1,
_inputiterator2 __first2, _tp __init)
template //版本2,兩個迭代器的二元操作,提供operator+和operator*
_tp inner_product(_inputiterator1 __first1, _inputiterator1 __last1,
_inputiterator2 __first2, _tp __init,
_binaryoperation1 __binary_op1,
_binaryoperation2 __binary_op2)
三、partial_num
作用:區域性計算總和,*first賦值給*result,*first+*(first+1)賦值給*(result+1),依次類推,直至first==last。原始序列為[1,2,3,4,5],執行後得到[1,3,6,10,15]。
template _outputiterator
__partial_sum(_inputiterator __first, _inputiterator __last,
_outputiterator __result, _tp*)
return ++__result;
}template //版本1
_outputiterator
partial_sum(_inputiterator __first, _inputiterator __last,
_outputiterator __result)
template _outputiterator
__partial_sum(_inputiterator __first, _inputiterator __last,
_outputiterator __result, _tp*, _binaryoperation __binary_op)
return ++__result;
}template //版本2
_outputiterator
partial_sum(_inputiterator __first, _inputiterator __last,
_outputiterator __result, _binaryoperation __binary_op)
四、adjacent_difference
作用:計算相鄰元素的差。原始序列為[1,2,3,4,5],執行partial_num後得到[1,3,6,10,15],再執行adjacent_difference後得到[1,2,3,4,5]。
template _outputiterator
__adjacent_difference(_inputiterator __first, _inputiterator __last,
_outputiterator __result, _tp*)
return ++__result;
}template //版本1
_outputiterator
adjacent_difference(_inputiterator __first,
_inputiterator __last, _outputiterator __result)
template _outputiterator
__adjacent_difference(_inputiterator __first, _inputiterator __last,
_outputiterator __result, _tp*,
_binaryoperation __binary_op)
return ++__result;
}template _outputiterator
adjacent_difference(_inputiterator __first, _inputiterator __last,
_outputiterator __result, _binaryoperation __binary_op)
五、power(sgi專屬,不在stl之列)
作用:指定元素的n次方
template inline _tp __power(_tp __x, _integer __n)
template //冪次方
inline _tp power(_tp __x, _integer __n, _monoidoperation __opr)
template inline _tp power(_tp __x, _integer __n)
六、itoa(sgi專屬,不在stl之列)
作用:設定某個區間內容
template void
iota(_forwarditer __first, _forwarditer __last, _tp __value)
STL原始碼剖析學習十二 演算法之數值演算法
相關函式都包含在中 先列個例項 include include include include include include using namespace std void main vector iv ia,ia 5 cout 0 0,minus 10 10,minus plus ostrea...
STL之deque原始碼剖析
deque是一種那個雙向開口的連續線性空間,其頭尾端做元素的插入和刪除效率比vector效率高很多。deque和vector的最大差異,一在於deque允許常數時間內對頭尾端進行元素插入或移除操作,二在於deque沒有所謂容量概念,因為它是動態地分段連續空間組合而成,隨時可以增加一段新的空間並鏈結起...
STL原始碼剖析之vector
向量vector 1.vector概述 vector的資料安排以及操作方式,與array非常相似。兩者的唯一差別在於空間的運用的靈活性。array是靜態空間,一旦配置了就不能改變 vector是動態空間,隨著元素的加入,它的內部機制會自行擴充空間以容納新元素。vector的實現技術,關鍵在於其對大小...