📄 smbmusicaplibalgorithm.h
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*--------------------------------------------------------------------*/
// FileName:
// SmbMusicAPLibAlgorithm.h
//
// Description:
// PTX810 Music傾僾儕 儈儏乕僕僢僋嫟捠儔僀僽儔儕
/*--------------------------------------------------------------------*/
//曄峏棜楌
//擔晅 |曄峏幰 |撪梕
//--------------+---------------+--------------------------------------
//2006/09/23 |SEMC崃绮 |僼傽僀儖僔僗僥儉嫟捠儔僀僽儔儕偐傜愗傝弌偟
/** @file SmbMusicAPLibAlgorithm.h
* STL 偺 @<algorithm@> 憡摉丅
*
* $Revision: 1.3 $ $Date: 2006/04/05 17:21:27 $
*/
#ifndef __SMBMUSICAPLIB_ALGORITHM_H__
#define __SMBMUSICAPLIB_ALGORITHM_H__
#include "SmbMusicAPLibConfig.h"
#include "TSmbMusicAPLibUtility.h" // for TSmbMusicAPLibPair<T1, T2>
SEMCJ_NAMESPACE_BEGIN
MUSICAPLIB_NAMESPACE_BEGIN
/**
* 堷悢偺抣傪岎姺偡傞丅
*
* @param[in] a1 堷悢侾
* @param[in] a2 堷悢俀
*/
template<typename T>
void Swap( T& a1, T& a2 );
/**
* 庴偗庢偭偨堷悢抣偺彫偝偄曽傪曉偡丅
*
* 梫慺偺斾妑庤抜偲偟偰墘嶼巕 < 傪巊偆丅
*
* @param[in] a1 堷悢侾
* @param[in] a2 堷悢俀
* @return 抣偑彫偝偄曽丅
* @attention <e32std.h> Min() 偑偁傞偑丄偄偔偮偐崲傞揰偑偁傞(call by value, 惍悢宆偲偺 overload)偺偱丄偁偊偰掕媊偟偰偄傞丅
*/
template<typename T>
const T& MyMin( const T& a1, const T& a2 );
/**
* 庴偗庢偭偨堷悢抣偺彫偝偄曽傪曉偡丅
*
* MyMin(const T&, const T&) 偺弎岅巜掕僶乕僕儑儞丅<br>
* 墘嶼巕 < 偺戙傢傝偵丄巜掕偝傟偨擇崁弎岅傪巊偆丅
*
* @param[in] a1 堷悢侾
* @param[in] a2 堷悢俀
* @param[in] aCmp 墘嶼巕 < 偺戙傢傝偵巊傢傟傞斾妑娭悢丅
* @return 抣偑彫偝偄曽丅
*/
template<typename T, typename Compare>
const T& MyMin( const T& a1, const T& a2, Compare aCmp );
/**
* 庴偗庢偭偨堷悢抣偺戝偒偄曽傪曉偡丅
*
* 梫慺偺斾妑庤抜偲偟偰墘嶼巕 < 傪巊偆丅
*
* @param[in] a1 堷悢侾
* @param[in] a2 堷悢俀
* @return 抣偑戝偒偄曽丅
* @attention <e32std.h> Max() 偑偁傞偑丄偄偔偮偐崲傞揰偑偁傞(call by value, 惍悢宆偲偺 overload)偺偱丄偁偊偰掕媊偟偰偄傞丅
*/
template<typename T>
const T& MyMax( const T& a1, const T& a2 );
/**
* 庴偗庢偭偨堷悢抣偺戝偒偄曽傪曉偡丅
*
* MyMax(const T&, const T&) 偺弎岅巜掕僶乕僕儑儞丅<br>
* 墘嶼巕 < 偺戙傢傝偵丄巜掕偝傟偨擇崁弎岅傪巊偆丅
*
* @param[in] a1 堷悢侾
* @param[in] a2 堷悢俀
* @param[in] aCmp 墘嶼巕 < 偺戙傢傝偵巊傢傟傞斾妑娭悢丅
* @return 抣偑戝偒偄曽丅
*/
template<typename T, typename Compare>
const T& MyMax( const T& a1, const T& a2, Compare aCmp );
/**
* 俀偮偺斖埻傪斾妑偟寢壥傪曉偡丅
*
* 斖埻 [@a aFirst1, @a aLast1) 偺奺梫慺偵偮偒丄@a aFirst2 偐傜巒傑傞摨埵抲梫慺偲偺摍抣斾妑傪峴偄丄寢壥傪曉偡丅<br>
* 梫慺偺摍抣斾妑庤抜偲偟偰墘嶼巕 == 傪巊偆丅
*
* @param[in] aFirst1 斖埻侾偺擖椡奐巒埵抲丅
* @param[in] aLast1 斖埻侾偺擖椡廔椆埵抲丅
* @param[in] aFirst2 斖埻俀偺擖椡奐巒埵抲丅
* @return 斖埻俀偑彮側偔偲傕斖埻侾偲摨悢偺梫慺傪帩偪丄摨埵抲偺奺梫慺偑摍抣偱偁傞応崌丄恀傪曉偡丅
*/
template<typename InputIterator1, typename InputIterator2>
TBool Equal( InputIterator1 aFirst1, InputIterator1 aLast1, InputIterator2 aFirst2 );
/**
* 俀偮偺斖埻傪斾妑偟寢壥傪曉偡丅
*
* Equal(InputIterator1, InputIterator1, InputIterator2) 偺弎岅巜掕僶乕僕儑儞丅<br>
* 墘嶼巕 == 偺戙傢傝偵丄巜掕偝傟偨擇崁弎岅傪巊偆丅
*
* @param[in] aFirst1 see Equal(InputIterator1, InputIterator1, InputIterator2)
* @param[in] aLast1 see Equal(InputIterator1, InputIterator1, InputIterator2)
* @param[in] aFirst2 see Equal(InputIterator1, InputIterator1, InputIterator2)
* @param[in] aBinPred 摍抣斾妑寢壥傪曉偡擇崁弎岅傪巜掕偡傞丅
* @return see Equal(InputIterator1, InputIterator1, InputIterator2)
*/
template<typename InputIterator1, typename InputIterator2, typename BinaryPredicate>
TBool Equal( InputIterator1 aFirst1, InputIterator1 aLast1, InputIterator2 aFirst2, BinaryPredicate aBinPred );
/**
* 俀偮偺斖埻傪帿彂弴偵斾妑偟寢壥傪曉偡丅
*
* 帤嬪斾妑偺奣擮偺幚憰丅
* 斖埻 [@a aFirst1, @a aLast1) 偲 [@a aFirst2, @a aLast2) 傪摍壙斾妑偟丄慜幰偑屻幰傛傝傕乽彫偝偄乿応崌偵恀傪曉偡丅<br>
* 梫慺偺摍壙斾妑庤抜偲偟偰墘嶼巕 < 傪巊偆丅
*
* @param[in] aFirst1 斖埻侾偺擖椡奐巒埵抲丅
* @param[in] aLast1 斖埻侾偺擖椡廔椆埵抲丅
* @param[in] aFirst2 斖埻俀偺擖椡奐巒埵抲丅
* @param[in] aLast2 斖埻俀偺擖椡廔椆埵抲丅
* @return 摨埵抲梫慺傪斾妑偟丄@a *aFirst1 < @a *aFirst2 側慻傒崌傢偣偑尒偮偐偭偨傜丄偡偖偵恀傪曉偡丅
* @a *aFirst2 < @a *aFirst1 側慻傒崌傢偣偑尒偮偐偭偨傜丄偡偖偵婾傪曉偡丅
* 斾妑儖乕僾偑斖埻侾偺廔抂 @a aLast1 偵払偟偨応崌丄斖埻俀偵巆傝偑偁傞側傜偽恀偑曉偝傟傞丅
* 斖埻俀偑愭偵廔抂 @a aLast2 偵払偟偨応崌偼婾偑曉偝傟傞丅
*/
template<typename InputIterator1, typename InputIterator2>
TBool Lexicographical_compare( InputIterator1 aFirst1, InputIterator1 aLast1, InputIterator2 aFirst2, InputIterator2 aLast2 );
/**
* 俀偮偺斖埻傪帿彂弴偵斾妑偟寢壥傪曉偡丅
*
* Lexicographical_compare(InputIterator1, InputIterator1, InputIterator2, InputIterator2) 偺弎岅巜掕僶乕僕儑儞丅<br>
* 墘嶼巕 < 偺戙傢傝偵丄巜掕偝傟偨擇崁弎岅傪巊偆丅
*
* @param[in] aFirst1 see Lexicographical_compare(InputIterator1, InputIterator1, InputIterator2, InputIterator2)
* @param[in] aLast1 see Lexicographical_compare(InputIterator1, InputIterator1, InputIterator2, InputIterator2)
* @param[in] aFirst2 see Lexicographical_compare(InputIterator1, InputIterator1, InputIterator2, InputIterator2)
* @param[in] aLast2 see Lexicographical_compare(InputIterator1, InputIterator1, InputIterator2, InputIterator2)
* @param[in] aBinPred 斾妑敾掕寢壥傪曉偡擇崁弎岅傪巜掕偡傞丅
* @return see Lexicographical_compare(InputIterator1, InputIterator1, InputIterator2, InputIterator2)
*/
template<typename InputIterator1, typename InputIterator2, typename BinaryPredicate>
TBool Lexicographical_compare( InputIterator1 aFirst1, InputIterator1 aLast1, InputIterator2 aFirst2, InputIterator2 aLast2, BinaryPredicate aBinPred );
/**
* 摍抣梫慺偺専嶕丅
*
* 斖埻 [@a aFirst, @a aLast) 撪偺 @a aVal 偲摍抣偺梫慺傪専嶕偟丄尒偮偐偭偨嵟弶偺斀暅巕傪曉偡丅<br>
* 梫慺偺摍抣斾妑庤抜偲偟偰墘嶼巕 == 傪巊偆丅
*
* @param[in] aFirst 専嶕奐巒埵抲丅
* @param[in] aLast 専嶕廔椆埵抲丅
* @param[in] aVal 懳徾抣丅
* @return 嵟弶偵尒偮偐偭偨梫慺傪億僀儞僩偡傞斀暅巕丅尒偮偐傜側偐偭偨応崌偼 @a aLast 偑栠偝傟傞丅
*/
template <typename InputIterator, typename T>
InputIterator Find( InputIterator aFirst, InputIterator aLast, const T& aVal );
/**
* 巜掕忦審傪枮偨偡梫慺偺専嶕丅
*
* Find(InputIterator, InputIterator, const T&) 偺弎岅巜掕僶乕僕儑儞丅<br>
* 墘嶼巕 == 偺戙傢傝偵丄巜掕偝傟偨扨崁弎岅傪巊偆丅
*
* @param[in] aFirst see Find(InputIterator, InputIterator, const T&)
* @param[in] aLast see Find(InputIterator, InputIterator, const T&)
* @param[in] aPred 忦審敾掕寢壥傪曉偡扨崁弎岅傪巜掕偡傞丅
* @return see Find(InputIterator, InputIterator, const T&)
*/
template <typename InputIterator, typename Predicate>
InputIterator Find_if( InputIterator aFirst, InputIterator aLast, Predicate aPred );
/**
* 暋悢偺梫慺偄偢傟偐偲摍抣側梫慺偺専嶕丅
*
* 斖埻 [@a aFirst1, @a aLast1) 撪偺梫慺偺拞偱丄 [@a aFirst2, aLast2) 撪偺梫慺偄偢傟偐偲摍抣偺梫慺傪専嶕偟丄尒偮偐偭偨嵟弶偺斀暅巕傪曉偡丅<br>
* 梫慺偺摍抣斾妑庤抜偲偟偰墘嶼巕 == 傪巊偆丅
*
* @param[in] aFirst1 専嶕奐巒埵抲丅
* @param[in] aLast1 専嶕廔椆埵抲丅
* @param[in] aFirst2 斾妑梫慺奐巒埵抲丅
* @param[in] aLast2 斾妑梫慺廔椆埵抲丅
* @return 嵟弶偵尒偮偐偭偨梫慺傪億僀儞僩偡傞斀暅巕丅尒偮偐傜側偐偭偨応崌偼 @a aLast1 偑栠偝傟傞丅
*/
template <typename InputIterator, typename ForwardIterator>
InputIterator Find_first_of( InputIterator aFirst1, InputIterator aLast1, ForwardIterator aFirst2, ForwardIterator aLast2 );
/**
* 暋悢偺梫慺偄偢傟偐偵懳偟偰巜掕忦審傪枮偨偡梫慺傪専嶕丅
*
* Find_first_of(InputIterator, InputIterator, ForwardIterator, ForwardIterator) 偺弎岅巜掕僶乕僕儑儞丅<br>
* 墘嶼巕 == 偺戙傢傝偵丄巜掕偝傟偨擇崁弎岅傪巊偆丅
*
* @param[in] aFirst1 see Find_first_of(InputIterator, InputIterator, ForwardIterator, ForwardIterator)
* @param[in] aLast1 see Find_first_of(InputIterator, InputIterator, ForwardIterator, ForwardIterator)
* @param[in] aFirst2 see Find_first_of(InputIterator, InputIterator, ForwardIterator, ForwardIterator)
* @param[in] aLast2 see Find_first_of(InputIterator, InputIterator, ForwardIterator, ForwardIterator)
* @param[in] aPred 忦審敾掕寢壥傪曉偡擇崁弎岅傪巜掕偡傞丅
* @return see Find_first_of(InputIterator, InputIterator, ForwardIterator, ForwardIterator)
*/
template <typename InputIterator, typename ForwardIterator, typename BinaryPredicate>
InputIterator Find_first_of( InputIterator aFirst1, InputIterator aLast1, ForwardIterator aFirst2, ForwardIterator aLast2, BinaryPredicate aPred );
/**
* 巜掕斖埻傪僐僺乕丅
*
* 斖埻 [@a aFirst1, @a aLast1) 偺奺梫慺傪 @a aResult 偐傜巒傑傞摨埵抲傊僐僺乕偡傞丅
*
* @param[in] aFirst 擖椡奐巒埵抲丅
* @param[in] aLast 擖椡廔椆埵抲丅
* @param[in] aResult 弌椡斀暅巕丅
* @return 張棟屻偺弌椡斀暅巕傪曉偡丅
* @attention @a aResult 偼憓擖斀暅巕偱偁傞偐丄儊儌儕忋偵幚嵼偡傞昁梫悢屄偺梫慺暲傃偱側偗傟偽側傜側偄丅
*/
template<typename InputIterator, typename OutputIterator>
OutputIterator Copy( InputIterator aFirst, InputIterator aLast, OutputIterator aResult );
/**
* 巜掕斖埻偺忦審晅偒僐僺乕丅
*
* Copy(InputIterator, InputIterator, OutputIterator) 偺忦審晅偒僶乕僕儑儞丅<br>
* 巜掕偝傟偨扨崁弎岅偑恀偵昡壙偡傞梫慺偺傒傪僐僺乕偡傞丅
*
* @param[in] aFirst see Copy(InputIterator, InputIterator, OutputIterator)
* @param[in] aLast see Copy(InputIterator, InputIterator, OutputIterator)
* @param[in] aResult see Copy(InputIterator, InputIterator, OutputIterator)
* @param[in] aPred 敾掕寢壥傪曉偡扨崁弎岅傪巜掕偡傞丅
* @return see Copy(InputIterator, InputIterator, OutputIterator)
* @attention see Copy(InputIterator, InputIterator, OutputIterator)
*/
template<typename InputIterator, typename OutputIterator, typename Predicate>
OutputIterator Copy_if( InputIterator aFirst, InputIterator aLast, OutputIterator aResult, Predicate aPred );
/**
* 巜掕斖埻傪摿掕抣偱杽傔傞丅
*
* 斖埻 [@a aFirst, @a aLast) 偺慡梫慺偵 @a aVal 傪戙擖偡傞丅
*
* @param[in] aFirst 弌椡奐巒埵抲丅
* @param[in] aLast 弌椡廔椆埵抲丅
* @param[in] aVal 懳徾抣丅
*/
template<typename ForwardIterator, typename T>
void Fill( ForwardIterator aFirst, ForwardIterator aLast, const T& aVal );
/**
* 摿掕抣偺梫慺傪巜掕夞悢弌椡丅
*
* Fill(ForwardIterator, ForwardIterator, const T&) 偺弌椡斀暅巕僶乕僕儑儞丅<br>
* @a aVal 傪 @a aNum 夞 @a aFirst 傊弌椡偡傞丅
*
* @param[in] aFirst 弌椡斀暅巕丅
* @param[in] aNum 弌椡夞悢丅
* @param[in] aVal 懳徾抣丅
* @return 張棟屻偺弌椡斀暅巕傪曉偡丅
* @attention @a aFirst 偼憓擖斀暅巕偱偁傞偐丄儊儌儕忋偵幚嵼偡傞昁梫悢屄偺梫慺暲傃偱側偗傟偽側傜側偄丅
*/
template<typename OutputIterator, typename Size, typename T>
OutputIterator Fill_n( OutputIterator aFirst, Size aNum, const T& aVal );
/**
* 巜掕斖埻傪巜掕僕僃僱儗乕僞偱弶婜壔丅
*
* 斖埻 [@a aFirst, @a aLast) 偺慡梫慺偵 @a aGen 偺曉媝抣傪戙擖偡傞丅
*
* @param[in] aFirst 弌椡奐巒埵抲丅
* @param[in] aLast 弌椡廔椆埵抲丅
* @param[in] aGen 僕僃僱儗乕僞丅堷悢側偟丄栠傝抣偑弌椡抣偲側傞丅
*/
template<typename ForwardIterator, typename Generator>
void Generate( ForwardIterator aFirst, ForwardIterator aLast, Generator aGen );
/**
* 巜掕僕僃僱儗乕僞偺惗惉抣傪巜掕夞悢弌椡丅
*
* Generate(ForwardIterator, ForwardIterator, Generator) 偺弌椡斀暅巕僶乕僕儑儞丅<br>
* @a aNum 夞 @a aGen 傪屇傃弌偟 @a aFirst 傊弌椡偡傞丅
*
* @param[in] aFirst 弌椡斀暅巕丅
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -