📄 smbmusicaplibalgorithm.h
字号:
* @param[in] aNum 弌椡夞悢丅
* @param[in] aGen see Generate(ForwardIterator, ForwardIterator, Generator)
* @return 張棟屻偺弌椡斀暅巕傪曉偡丅
* @attention @a aFirst 偼憓擖斀暅巕偱偁傞偐丄儊儌儕忋偵幚嵼偡傞昁梫悢屄偺梫慺暲傃偱側偗傟偽側傜側偄丅
*/
template<typename OutputIterator, typename Size, typename Generator>
OutputIterator Generate_n( OutputIterator aFirst, Size aNum, Generator aGen );
/**
* 扨弮側捠斣僕僃僱儗乕僞丅
*
* Generate(), Generate_n() 偵梌偊偰巊偆偙偲傪堄恾偟偨僼傽儞僋僞丅<br>
* 屻抲僀儞僋儕儊儞僩墘嶼巕偺僙儅儞僥傿僋僗偱摦嶌偡傞娭悢僆僽僕僃僋僩丅
* 弶婜抣偲憹暘偼丄僐儞僗僩儔僋僞堷悢偱梌偊傞丅
*/
template<typename T>
struct TSmbMusicAPLib_SimpleGenerator
{
mutable T iVal;
const T iIncr;
TSmbMusicAPLib_SimpleGenerator( const T& aStart, const T& aIncr ) : iVal(aStart), iIncr(aIncr) {}
const T operator()() const
{
T ret=iVal;
iVal+=iIncr;
return ret;
}
}; // end of TSmbMusicAPLib_SimpleGenerator
/**
* 斖埻撪偺奺梫慺傊娭悢傪揔梡丅
*
* 斖埻 [@a aFirst, @a aLast) 撪偺奺梫慺偵偮偒丄偦傟傪堷悢偲偟偰 @a aFunc 傪屇傃弌偡丅
*
* @param[in] aFirst 奐巒埵抲丅
* @param[in] aLast 廔椆埵抲丅
* @param[in] aFunc 懳徾侾梫慺傪庴偗庢傞擟堄偺扨崁娭悢丅
* @return @a aFunc 傪偦偺傑傑曉偡丅
*/
template<typename InputIterator, typename Function>
Function For_each( InputIterator aFirst, InputIterator aLast, Function aFunc );
/**
* 斖埻撪偺忦審傪枮偨偡奺梫慺傊娭悢傪揔梡丅
*
* For_each(InputIterator, InputIterator, Function) 偺忦審晅偒僶乕僕儑儞丅<br>
* 巜掕偝傟偨扨崁弎岅偑恀偵昡壙偡傞梫慺偵偮偄偰偺傒丄偦傟傪堷悢偲偟偰 @a aFunc 傪屇傃弌偡丅
*
* @param[in] aFirst see For_each(InputIterator, InputIterator, Function)
* @param[in] aLast see For_each(InputIterator, InputIterator, Function)
* @param[in] aFunc see For_each(InputIterator, InputIterator, Function)
* @param[in] aPred 敾掕寢壥傪曉偡扨崁弎岅傪巜掕偡傞丅
* @return see For_each(InputIterator, InputIterator, Function)
*/
template<typename InputIterator, typename Function, typename Predicate>
Function For_each_if( InputIterator aFirst, InputIterator aLast, Function aFunc, Predicate aPred );
/**
* 巜掕斖埻偵墘嶼傪揔梡偟偰弌椡丅
*
* 斖埻 [@a aFirst, @a aLast) 撪偺奺梫慺偵丄扨崁墘嶼 @a aUnaryOp 傪揔梡偟丄
* 偦偺寢壥傪弌椡斀暅巕 @a aResult 偵搉偡丅
*
* @param[in] aFirst 擖椡奐巒埵抲丅
* @param[in] aLast 擖椡廔椆埵抲丅
* @param[in] aResult 弌椡斀暅巕丅
* @param[in] aUnaryOp 梫慺偵揔梡偡傞扨崁墘嶼丅
* @return 張棟屻偺弌椡斀暅巕傪曉偡丅
*/
template<typename InputIterator, typename OutputIterator, typename UnaryOperation>
OutputIterator Transform( InputIterator aFirst, InputIterator aLast, OutputIterator aResult, UnaryOperation aUnaryOp );
/**
* 俀偮偺巜掕斖埻偵墘嶼傪揔梡偟偰弌椡丅
*
* 斖埻 [@a aFirst1, @a aLast1) 偍傛傃 @a aFirst2 偱巒傑傞斖埻偺摨埵抲俀梫慺偵丄擇崁墘嶼 @a aBinaryOp 傪揔梡偟丄
* 偦偺寢壥傪弌椡斀暅巕 @a aResult 偵搉偡丅
*
* @param[in] aFirst1 斖埻侾偺擖椡奐巒埵抲丅
* @param[in] aLast1 斖埻侾偺擖椡廔椆埵抲丅
* @param[in] aFirst2 斖埻俀偺擖椡奐巒埵抲丅
* @param[in] aResult 弌椡斀暅巕丅
* @param[in] aBinaryOp 梫慺偵揔梡偡傞擇崁墘嶼丅
* @return 張棟屻偺弌椡斀暅巕傪曉偡丅
*/
template<typename InputIterator1, typename InputIterator2, typename OutputIterator, typename BinaryOperation>
OutputIterator Transform( InputIterator1 aFirst1, InputIterator1 aLast1, InputIterator2 aFirst2, OutputIterator aResult, BinaryOperation aBinaryOp );
/**
* 摿掕抣偺梫慺傪庢傝彍偔丅
*
* 斖埻 [@a aFirst, @a aLast) 偐傜 @a aVal 偺摍抣梫慺傪庢傝彍偒丄偦偺寗娫傪媗傔丄僑儈偺愭摢傪巜偡斀暅巕傪栠偡丅
*
* STL傪抦傜側偄棙梡幰偺偨傔偵娙扨偵愢柧偡傞丅
* - 354621271
*
* 偲偄偆僔乕働儞僗偑偁傞偲偡傞丅偙偙偐傜抣 '2' 傪庢傝彍偔偲丄寢壥偼
* - 3546171|XX
*
* 偲側傞丅悅捈僶乕偼曉偝傟偨斀暅巕偺埵抲傪帵偟偰偄傞丅'XX' 偼嶍彍偝傟偨俀屄偺 '2' 偵桼棃偡傞傕偺偩偑丄
* 偦偺抣偼晄掕偱偁傞(尦乆偦偺埵抲偵偁偭偨梫慺偺抣偦偺傑傑偐傕偟傟側偄)丅
*
* 偮傑傝 Remove() 偼僔乕働儞僗偐傜梫慺傪嶍彍偡傞傢偗偱偼側偄丅杮摉偵嶍彍偡傞応崌偼丄師偺姷梡嬪傪巊偆丅
* - container.Erase( Remove(first, last, value), container.End() );
*
* @param[in] aFirst 奐巒埵抲丅
* @param[in] aLast 廔椆埵抲丅
* @param[in] aVal 懳徾抣丅
* @return 巆偭偨梫慺偺嵟屻旜傪巜偡斀暅巕丅
* @attention 側傫傜偐偺僆僽僕僃僋僩傪巜偡 pointer 傪強桳尃偁傝偱婰壇偟偰偄傞僐儞僥僫偵丄偙偺傾儖僑儕僘儉傪
* 揔梡偡傞偙偲偼婋尟偱偁傞丅儊儌儕儕乕僋傗攋夡傪彽偔嫲傟偁傝丅
* 側傫偺偙偲偐傢偐傜側偄恖偼 STL 偺 remove() 宯傾儖僑儕僘儉偺僙儅儞僥傿僋僗傪挷傋傛丅
*/
template<typename ForwardIterator, typename T>
ForwardIterator Remove( ForwardIterator aFirst, ForwardIterator aLast, const T& aVal );
/**
* 忦審傪枮偨偡梫慺傪庢傝彍偔丅
*
* Remove(ForwardIterator, ForwardIterator, const T&) 偺弎岅巜掕僶乕僕儑儞丅<br>
* 墘嶼巕 == 偺戙傢傝偵丄巜掕偝傟偨扨崁弎岅傪巊偆丅
*
* @param[in] aFirst see Remove(ForwardIterator, ForwardIterator, const T&)
* @param[in] aLast see Remove(ForwardIterator, ForwardIterator, const T&)
* @param[in] aPred 忦審敾掕寢壥傪曉偡扨崁弎岅傪巜掕偡傞丅
* @return see Remove(ForwardIterator, ForwardIterator, const T&)
* @attention see Remove(ForwardIterator, ForwardIterator, const T&)
*/
template<typename ForwardIterator, typename Predicate>
ForwardIterator Remove_if( ForwardIterator aFirst, ForwardIterator aLast, Predicate aPred );
/**
* 摿掕抣偺梫慺傪庢傝彍偔丅
*
* 斖埻 [@a aFirst, @a aLast) 偐傜 @a aVal 偲乽摍抣偱側偄乿梫慺偡傋偰傪 @a aResult 傊僐僺乕偡傞丅
*
* @param[in] aFirst 奐巒埵抲丅
* @param[in] aLast 廔椆埵抲丅
* @param[in] aResult 弌椡斀暅巕丅
* @param[in] aVal 懳徾抣丅
* @return 張棟屻偺弌椡斀暅巕傪曉偡丅
*/
template<typename InputIterator, typename OutputIterator, typename T>
OutputIterator Remove_copy( InputIterator aFirst, InputIterator aLast, OutputIterator aResult, const T& aVal );
/**
* 忦審傪枮偨偡梫慺傪庢傝彍偔丅
*
* Remove_copy(InputIterator, InputIterator, OutputIterator, const T&) 偺弎岅巜掕僶乕僕儑儞丅<br>
* 斖埻 [@a aFirst, @a aLast) 偐傜 @a aPred 偑乽恀偱偼側偄乿(偮傑傝婾)偲敾抐偟偨梫慺偡傋偰傪 @a aResult 傊僐僺乕偡傞丅
*
* @param[in] aFirst see Remove_copy(InputIterator, InputIterator, OutputIterator, const T&)
* @param[in] aLast see Remove_copy(InputIterator, InputIterator, OutputIterator, const T&)
* @param[in] aResult see Remove_copy(InputIterator, InputIterator, OutputIterator, const T&)
* @param[in] aPred 忦審敾掕寢壥傪曉偡扨崁弎岅傪巜掕偡傞丅
* @return see Remove_copy(InputIterator, InputIterator, OutputIterator, const T&)
*/
template<typename InputIterator, typename OutputIterator, typename Predicate>
OutputIterator Remove_copy_if( InputIterator aFirst, InputIterator aLast, OutputIterator aResult, Predicate aPred );
/**
* 巜掕抣埲忋偱偁傞嵟弶偺梫慺傪媮傔傞丅
*
* 斖埻 [@a aFirst1, @a aLast1) 撪偵偍偄偰 @a aVal 偲摨偠偐偦傟傛傝戝偒偄嵟弶偺梫慺傪擇暘扵嶕偟丄尒偮偐偭偨嵟弶偺斀暅巕傪曉偡丅<br>
* 巜掕斖埻偼僜乕僩嵪傒偱偁傞偲壖掕偡傞丅
* 梫慺偺摍壙斾妑庤抜偲偟偰墘嶼巕 < 傪巊偆丅
*
* @param[in] aFirst 専嶕奐巒埵抲丅
* @param[in] aLast 専嶕廔椆埵抲丅
* @param[in] aVal 懳徾抣丅
* @return 摉奩斖埻撪偵偍偄偰 @a aVal 偑弴彉偵堘斀偡傞偙偲側偔愯桳偱偒傞嵟弶偺埵抲丅
*/
template<typename ForwardIterator, typename T>
ForwardIterator Lower_bound( ForwardIterator aFirst, ForwardIterator aLast, const T& aVal );
/**
* 巜掕抣埲忋偱偁傞嵟弶偺梫慺傪媮傔傞丅
*
* Lower_bound(ForwardIterator, ForwardIterator, const T&) 偺弎岅巜掕僶乕僕儑儞丅<br>
* 墘嶼巕 < 偺戙傢傝偵丄巜掕偝傟偨擇崁弎岅傪巊偆丅
*
* @param[in] aFirst see Lower_bound(ForwardIterator, ForwardIterator, const T&)
* @param[in] aLast see Lower_bound(ForwardIterator, ForwardIterator, const T&)
* @param[in] aVal see Lower_bound(ForwardIterator, ForwardIterator, const T&)
* @param[in] aCmp 巜掕斖埻偺僜乕僩偵巊傢傟偨斾妑娭悢傪巜掕偡傞丅
* @return see Lower_bound(ForwardIterator, ForwardIterator, const T&)
*/
template<typename ForwardIterator, typename T, typename Compare>
ForwardIterator Lower_bound( ForwardIterator aFirst, ForwardIterator aLast, const T& aVal, Compare aCmp );
/**
* 巜掕抣傪墇偊傞嵟弶偺梫慺傪媮傔傞丅
*
* 斖埻 [@a aFirst1, @a aLast1) 撪偵偍偄偰 @a aVal 傛傝戝偒偄嵟弶偺梫慺傪擇暘扵嶕偟丄尒偮偐偭偨嵟弶偺斀暅巕傪曉偡丅<br>
* 巜掕斖埻偼僜乕僩嵪傒偱偁傞偲壖掕偡傞丅
* 梫慺偺摍壙斾妑庤抜偲偟偰墘嶼巕 < 傪巊偆丅
*
* @param[in] aFirst 専嶕奐巒埵抲丅
* @param[in] aLast 専嶕廔椆埵抲丅
* @param[in] aVal 懳徾抣丅
* @return 摉奩斖埻撪偵偍偄偰 @a aVal 偑弴彉偵堘斀偡傞偙偲側偔愯桳偱偒傞嵟屻偺埵抲丅
*/
template<typename ForwardIterator, typename T>
ForwardIterator Upper_bound( ForwardIterator aFirst, ForwardIterator aLast, const T& aVal );
/**
* 巜掕抣傪墇偊傞嵟弶偺梫慺傪媮傔傞丅
*
* Upper_bound(ForwardIterator, ForwardIterator, const T&) 偺弎岅巜掕僶乕僕儑儞丅<br>
* 墘嶼巕 < 偺戙傢傝偵丄巜掕偝傟偨擇崁弎岅傪巊偆丅
*
* @param[in] aFirst see Upper_bound(ForwardIterator, ForwardIterator, const T&)
* @param[in] aLast see Upper_bound(ForwardIterator, ForwardIterator, const T&)
* @param[in] aVal see Upper_bound(ForwardIterator, ForwardIterator, const T&)
* @param[in] aCmp 巜掕斖埻偺僜乕僩偵巊傢傟偨斾妑娭悢傪巜掕偡傞丅
* @return see Upper_bound(ForwardIterator, ForwardIterator, const T&)
*/
template<typename ForwardIterator, typename T, typename Compare>
ForwardIterator Upper_bound( ForwardIterator aFirst, ForwardIterator aLast, const T& aVal, Compare aCmp );
/**
* 巜掕抣偲摍壙側斖埻傪媮傔傞丅
*
* 斖埻 [@a aFirst1, @a aLast1) 撪偵偍偄偰 @a aVal 偲摍壙側僒僽儗儞僕傪擇暘扵嶕偱媮傔丄偦偺奐巒埵抲偲廔椆埵抲傪巜偡斀暅巕偺儁傾傪曉偡丅
* 偡側傢偪丄僒僽儗儞僕偺
* - 奐巒埵抲偼 Lower_bound(ForwardIterator, ForwardIterator, const T&) 偵摍偟偄丅
* - 廔椆埵抲偼 Upper_bound(ForwardIterator, ForwardIterator, const T&) 偵摍偟偄丅
*
* 巜掕斖埻偼僜乕僩嵪傒偱偁傞偲壖掕偡傞丅
* 梫慺偺摍壙斾妑庤抜偲偟偰墘嶼巕 < 傪巊偆丅
*
* @param[in] aFirst 専嶕奐巒埵抲丅
* @param[in] aLast 専嶕廔椆埵抲丅
* @param[in] aVal 懳徾抣丅
* @return 摉奩斖埻撪偵偍偄偰 @a aVal 偲摍壙側僒僽儗儞僕傪帵偡堦懳偺斀暅巕丅
*/
template<typename ForwardIterator, typename T>
TSmbMusicAPLibPair<ForwardIterator, ForwardIterator> Equal_range( ForwardIterator aFirst, ForwardIterator aLast, const T& aVal );
/**
* 巜掕抣偲摍壙側斖埻傪媮傔傞丅
*
* Equal_range(ForwardIterator, ForwardIterator, const T&) 偺弎岅巜掕僶乕僕儑儞丅<br>
* 墘嶼巕 < 偺戙傢傝偵丄巜掕偝傟偨擇崁弎岅傪巊偆丅
*
* @param[in] aFirst see Equal_range(ForwardIterator, ForwardIterator, const T&)
* @param[in] aLast see Equal_range(ForwardIterator, ForwardIterator, const T&)
* @param[in] aVal see Equal_range(ForwardIterator, ForwardIterator, const T&)
* @param[in] aCmp 巜掕斖埻偺僜乕僩偵巊傢傟偨斾妑娭悢傪巜掕偡傞丅
* @return see Equal_range(ForwardIterator, ForwardIterator, const T&)
*/
template<typename ForwardIterator, typename T, typename Compare>
TSmbMusicAPLibPair<ForwardIterator, ForwardIterator> Equal_range( ForwardIterator aFirst, ForwardIterator aLast, const T& aVal, Compare aCmp );
/**
* 巜掕斖埻傪僜乕僩偡傞丅
*
* 斖埻 [@a aFirst, @a aLast) 傪僜乕僩偡傞丅
* 梫慺偺斾妑庤抜偲偟偰墘嶼巕 < 傪巊偆丅
*
* @param[in] aFirst 奐巒埵抲丅
* @param[in] aLast 廔椆埵抲丅
* @note 扨弮側僋僀僢僋僜乕僩傾儖僑儕僘儉傪梡偄傞偺偱暯嬒寁嶼検偑 O(N*log(N))丄偐偮乽埨掕偱偼側偄乿丅
*/
template<typename RandomAccessIterator>
void Sort( RandomAccessIterator aFirst, RandomAccessIterator aLast );
/**
* 巜掕斖埻傪僜乕僩偡傞丅
*
* Sort(RandomAccessIterator, RandomAccessIterator) 偺弎岅巜掕僶乕僕儑儞丅<br>
* 墘嶼巕 < 偺戙傢傝偵丄巜掕偝傟偨擇崁弎岅傪巊偆丅
*
* @param[in] aFirst 奐巒埵抲丅
* @param[in] aLast 廔椆埵抲丅
* @param[in] aCmp 梫慺偺斾妑娭悢丅
* @note see Sort(RandomAccessIterator, RandomAccessIterator)
*/
template<typename RandomAccessIterator, typename Compare>
void Sort( RandomAccessIterator aFirst, RandomAccessIterator aLast, Compare aCmp );
MUSICAPLIB_NAMESPACE_END
SEMCJ_NAMESPACE_END
#include "SmbMusicAPLibAlgorithm.inl"
#endif // __SMBMUSICAPLIB_ALGORITHM_H__
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -