📄 rsmbmusicaplibset.h
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*--------------------------------------------------------------------*/
// FileName:
// RSmbMusicAPLibSet.h
//
// Description:
// PTX810 Music傾僾儕 儈儏乕僕僢僋嫟捠儔僀僽儔儕
/*--------------------------------------------------------------------*/
//曄峏棜楌
//擔晅 |曄峏幰 |撪梕
//--------------+---------------+--------------------------------------
//2006/09/23 |SEMC崃绮 |僼傽僀儖僔僗僥儉嫟捠儔僀僽儔儕偐傜愗傝弌偟
/** @file RSmbMusicAPLibSet.h
* STL 偺 @<set@> 憡摉丅
*
* $Revision: 1.2 $ $Date: 2006/04/05 17:21:27 $
*/
#ifndef __RSMBMUSICAPLIB_SET_H__
#define __RSMBMUSICAPLIB_SET_H__
#include "RSmbMusicAPLibVector.h" // for RSmbMusicAPLibVector<T, DeletePolicy>, TSmbMusicAPLib_NotDelete
#include "TSmbMusicAPLibUtility.h" // for TSmbMusicAPLibPair<T1, T2>
#include "TSmbMusicAPLibFunctional.h" // for TSmbMusicAPLib_less<T>
SEMCJ_NAMESPACE_BEGIN
MUSICAPLIB_NAMESPACE_BEGIN
/**
* 堦堄偺僉乕傪曐帩偡傞楢憐婰壇僐儞僥僫丅
*
* 儐僯乕僋僉乕偺廤崌傪僒億乕僩偡傞楢憐僐儞僥僫丅
* std::set<Key, Compare> 傪愝寁儌僨儖偲偟丄憃曽岦斀暅巕傪僒億乕僩偡傞丅
*
* RSmbMusicAPLibMap 偲摨偠偔丄乽摍壙乿傪婎慴奣擮偲偡傞乽楢憐宆乿僐儞僥僫偺拠娫丅
* RSmbMusicAPLibMap 偑丄堦堄僉乕偲娭楢晅偗傜傟偨乽抣梫慺乿傪庡栚揑偲偡傞偺偵懳偟丄
* 杮僐儞僥僫偱偼乽僉乕偦偺傕偺偑庡栚揑梫慺乿偱傕偁傞丅
*
* 杮僐儞僥僫傪愝偗偨棟桼偼埲壓丅
* - SymbianOS 偵偼丄堦堄偺僉乕傪僒億乕僩偡傞楢憐僐儞僥僫偑丄側偄丅
* - 偟偐偟丄傾僾儕働乕僔儑儞偺堦晹偱丄僉乕偺堦堄曐徹僐儞僥僫偑傎偟偔側傞偙偲偼偁傞丅摨堦僆僽僕僃僋僩傊偺億僀儞僞偑廳暋偟側偄廤崌偑傎偟偄丄摍丅
* - 側偺偵丄偙傟傪偡傋偰丄乽攝楍僨乕僞峔憿丄憓擖帪偵枅夞儖乕僾偟偰廳暋傪攔彍偡傞乿偱幚尰偡傞偺偼丄攏幁偘偰偄傞丅
*
* final 偱偁傝丄攈惗棙梡傪梊掕偟側偄丅
*
* @param[in] Key 儐僯乕僋僉乕偺宆丅梫媮帠崁偼 std::set<Key, Compare> 偵摨偠丅
* @param[in] Compare 儐僯乕僋僉乕偺摍壙斾妑墘嶼丅僨僼僅儖僩偱偼 TSmbMusicAPLib_less 偑巊傢傟傞丅
* @param[in] DeletePolicy 儁傾梫慺偺嶍彍億儕僔乕丅僐儞僥僫偐傜梫慺偑嶍彍偝傟傞偲偒 DeletePolicy::Destroy(T*&) 偑屇傃弌偝傟傞丅
*
* @note 杮僐儞僥僫偼丄旕const側 @a Key 傪億僀儞僩偡傞斀暅巕傪曉偝側偄丅
* iterator 偲 const_iterator, reverse_iterator 偲 const_reverse_iterator 偼摨偠傕偺偱偁傞丅
* 傕偟旕const側斀暅巕傪擣傔偨傜丄儐僯乕僋僉乕偺僀儞僾儗乕僗曄峏偑壜偵側偭偰偟傑偄丄僙僢僩偑攋夡偝傟偰偟傑偆偙偲偵側傞偐傜丅
* 偙傟偼 std::set<Key, Compare> 偱傕摨偠偱偁傞丅
*
* @attention std::set<Key, Compare> 偲姰慡偵摍壙偱偼側偄丅
* 儐僯乕僋僉乕弴偵奿擺偟偨攝楍偲偄偆丄娙堈幚憰傪嵦偭偰偄傞偐傜偱偁傞丅
* 廳梫側堘偄傪嫇偘傞偲丄埲壓丅
* - 憓擖丒嶍彍偺寁嶼検偼 O(N) 偱偁傝 O(log N) 偱偼側偄丅
* - 憓擖丒嶍彍憖嶌偵傛傝丄曉媝嵪傒斀暅巕偼柍岠偲側傞丅
* - 斀暅巕偺幚嵺偺宆偼丄儔儞僟儉傾僋僙僗斀暅巕偱偁傞丅
* @attention 僥儞僾儗乕僩僷儔儊乕僞 @a DeletePolicy 偼丄std::set<Key, Compare> 旕屳姺偺僆儕僕僫儖偱偁傞丅
* SymbianOS 偱偼丄僗儅乕僩億僀儞僞偺幚尰偼晄壜擻側偺偱丄C* 僋儔僗僆僽僕僃僋僩傪強桳尃埾戸偱奿擺偡傞庤抜偑昁梫丄偲峫偊偨丅
*
* @attention @a DeletePolicy 偼丄僗儅乕僩億僀儞僞傎偳姰慡側摟夁懳嶔偱偼側偄丅 see RSmbMusicAPLibVector
*
* @see @ref Usage_RSmbMusicAPLibSet "堦堄僉乕廤崌楢憐僐儞僥僫 RSmbMusicAPLibSet 偺棙梡曽朄"
*/
template<typename Key, class Compare = TSmbMusicAPLib_less<Key>, class DeletePolicy = TSmbMusicAPLib_NotDelete>
class RSmbMusicAPLibSet
{
public:
typedef Key key_type; /**< 儐僯乕僋僉乕偺宆丅 value_type 偲摨偠偱偁傞丅 */
typedef Key value_type; /**< 抣偺宆丅 key_type 偲摨偠偱偁傞丅 */
typedef Compare key_compare; /**< 儐僯乕僋僉乕偺摍壙斾妑墘嶼巕丅 value_compare 偲摨偠偱偁傞丅 */
typedef Compare value_compare; /**< 梫慺偺斾妑墘嶼巕丅 key_compare 偲摨偠偱偁傞丅 */
private:
typedef RSmbMusicAPLibVector<value_type, DeletePolicy> Vec; /**< 塀暳偝傟偨幚懱僐儞僥僫偺宆丅 */
public:
typedef typename Vec::pointer pointer; /**< 梫慺傪巜偡億僀儞僞偺宆丅 */
typedef typename Vec::const_pointer const_pointer; /**< const側梫慺傪巜偡億僀儞僞偺宆丅 */
typedef typename Vec::reference reference; /**< 梫慺偺嶲徠宆丅 */
typedef typename Vec::const_reference const_reference; /**< const側梫慺偺嶲徠宆丅 */
typedef typename Vec::const_iterator iterator; /**< 梫慺傪巜偡斀暅巕偺宆丅 */
typedef typename Vec::const_iterator const_iterator; /**< const側梫慺傪巜偡斀暅巕偺宆丅 */
typedef typename Vec::const_reverse_iterator reverse_iterator; /**< 媡峴斀暅巕偺宆丅 */
typedef typename Vec::const_reverse_iterator const_reverse_iterator; /**< 媡峴斀暅巕(const)偺宆丅 */
typedef typename Vec::size_type size_type; /**< 梫慺悢側偳偺昞尰偵梡偄傞宆丅 */
typedef typename Vec::difference_type difference_type; /**< 梫慺娫偺嫍棧側偳偺昞尰偵梡偄傞宆丅 */
public:
/**
* 僐儞僗僩儔僋僞丅
*
* 嬻偭傐偺僙僢僩傪嶌惉偡傞丅
*
* @param[in] aCmp 儐僯乕僋僉乕偺摍壙斾妑墘嶼丅
*/
explicit RSmbMusicAPLibSet( const key_compare& aCmp=key_compare() );
/**
* 僐僺乕僐儞僗僩儔僋僞丅
*
* @param[in] aRhs 僐僺乕尦丅
* @attention Leave 偟偆傞丅 STL僐儞僥僫偲摨偠乽抣偺僙儅儞僥傿僋僗乿偲偟偨偄偨傔丄SymbianOS 偺尨懃奜偱偁傞偙偲偼彸抦偺忋偱丄偁偊偰偙偆偟偰偄傞丅
* 偨偩偟丄Leave 敪惗帪偱傕儊儌儕儕乕僋偼敪惗偝偣側偄丄懳嶔幚憰偼堊偝傟偰偄傞丅
*/
RSmbMusicAPLibSet( const RSmbMusicAPLibSet& aRhs );
/**
* 僐儞僗僩儔僋僞丅
*
* 斖埻 [@a aFirst, @a aLast) 偺梫慺偺抣僐僺乕偐傜惉傞僙僢僩傪嶌惉偡傞丅
* - 巜掕斀暅巕偑 TSmbMusicAPLibPair<Key, T> 宆偺抣傪曉偟丄
* - 偦偺 key 抣偑偡傋偰斖埻撪儐僯乕僋偱偁傞
*
* 応崌偺傒丄惉岟偑曐徹偝傟傞丅
*
* @param[in] aFirst 擖椡奐巒埵抲丅
* @param[in] aLast 擖椡廔椆埵抲丅
* @param[in] aCmp 儐僯乕僋僉乕偺摍壙斾妑墘嶼丅
* @attention Leave 偟偆傞丅 STL僐儞僥僫偲摨偠乽抣偺僙儅儞僥傿僋僗乿偲偟偨偄偨傔丄SymbianOS 偺尨懃奜偱偁傞偙偲偼彸抦偺忋偱丄偁偊偰偙偆偟偰偄傞丅
* 偨偩偟丄Leave 敪惗帪偱傕儊儌儕儕乕僋偼敪惗偝偣側偄丄懳嶔幚憰偼堊偝傟偰偄傞丅
*/
template<typename InputIterator>
RSmbMusicAPLibSet( InputIterator aFirst, InputIterator aLast, const key_compare& aCmp=key_compare() );
/**
* 僨僗僩儔僋僞丅
*
* Release() 傪屇傃弌偡丅
*
* @attention SymbianOS 偵偍偗傞 R* 僋儔僗偺尨懃偐傜偼偼偢傟傞偑丄robustness 偺偨傔偵僨僗僩儔僋僞傪愝偗傞丅
*/
~RSmbMusicAPLibSet();
/**
* 戙擖墘嶼巕丅
*
* @param[in] aRhs 僐僺乕尦丅
* @return *this 傪曉偡丅
* @attention Leave 偟偆傞丅
*/
RSmbMusicAPLibSet& operator=( const RSmbMusicAPLibSet& aRhs );
/**
* key_type 傪斾妑偡傞娭悢傪曉偡丅
*
* @return 尰嵼偺僙僢僩偺斾妑墘嶼僆僽僕僃僋僩丅
*/
key_compare Key_comp() const;
/**
* value_type 傪斾妑偡傞娭悢傪曉偡丅
*
* @return 尰嵼偺僙僢僩偺斾妑墘嶼僆僽僕僃僋僩丅 偙傟偼 Key_comp() 偲摨偠偱偁傞丅
*/
value_compare Value_comp() const;
/**
* 嵟弶偺梫慺傪億僀儞僩偡傞斀暅巕傪曉偡丅
*
* @return 嵟弶偺梫慺傪億僀儞僩偡傞斀暅巕丅
*/
iterator Begin() const;
/**
* 嵟屻偺梫慺偺捈屻偺梫慺傪億僀儞僩偡傞斀暅巕傪曉偡丅
*
* @return 嵟屻偺梫慺偺捈屻偺梫慺傪億僀儞僩偡傞斀暅巕丅
*/
iterator End() const;
/**
* End() 傪巜偡媡峴斀暅巕傪曉偡丅
*
* @return End() 傪巜偡媡峴斀暅巕丅
*/
reverse_iterator RBegin() const;
/**
* Begin() 傪巜偡媡峴斀暅巕傪曉偡丅
*
* @return Begin() 傪巜偡媡峴斀暅巕丅
*/
reverse_iterator REnd() const;
/**
* 偙偺僙僢僩偑嬻偱偁傞偐傪曉偡丅
*
* @return 偙偺僙僢僩偑嬻偱偁傟偽恀傪丄偦偆偱側偗傟偽婾傪曉偡丅
*/
TBool Empty() const;
/**
* 偙偺僙僢僩偺梫慺悢傪曉偡丅
*
* @return 偙偺僙僢僩偺梫慺悢丅
*/
size_type Size() const;
/**
* 僙僢僩偺嵟戝壜擻梫慺悢傪曉偡丅
*
* @return 僙僢僩偺嵟戝壜擻梫慺悢丅
* @attention 杮棃側傜偽 @a Key 宆偑昞尰偟偆傞儐僯乕僋僉乕抣偺憤悢偺傒偵惂尷偝傟傞偼偢偱偁傞偑丄
* 偦偆側偭偰偄側偄丅攝楍僐儞僥僫偺彅尦撪偵側傞丅 see RSmbMusicAPLibVector::Max_size()
*/
size_type Max_size() const;
/**
* 僆僽僕僃僋僩偺岎姺丅
*
* 帺屓偲@a aRhs 偲偺娫偱丄慡梫慺傪岎姺偡傞丅<br>
* std::set<Key, Compare> 偲摨偠偔丄掕悢帪娫 O(1) 偱偁傝丄椺奜埨慡(Leave側偟)偱偁傞丅
*
* @param[in] aRhs 懳徾僙僢僩丅
*/
void Swap( RSmbMusicAPLibSet& aRhs );
/**
* 梫慺偺憓擖丅
*
* 摨堦抣偑懚嵼偟側偄応崌偵尷傝丄巜掕梫慺偺抣僐僺乕傪偙偺僙僢僩撪偵憓擖偡傞丅
*
* @param[in] aVal 懳徾梫慺丅
* @return 憓擖偟偨梫慺傪億僀儞僩偡傞斀暅巕偲丄憓擖偑幚嵺偵峴傢傟偨偐斲偐傪帵偡恀婾抣丅
*/
TSmbMusicAPLibPair<iterator, TBool> InsertL( const value_type& aVal );
/**
* 梫慺偺憓擖丅
*
* 摨堦抣偑懚嵼偟側偄応崌偵尷傝丄巜掕梫慺偺抣僐僺乕傪偙偺僙僢僩撪偵憓擖偡傞丅
*
* @param[in] aPos 憓擖埵抲偵娭偡傞僸儞僩丅
* @param[in] aVal 懳徾梫慺丅
* @return 憓擖偟偨梫慺傪億僀儞僩偡傞斀暅巕丅
*/
iterator InsertL( iterator aPos, const value_type& aVal );
/**
* 梫慺偺憓擖丅
*
* 斖埻 [@a aFirst, @a aLast) 偺梫慺偺抣僐僺乕傪偙偺僙僢僩偵憓擖偡傞丅
* - 巜掕斀暅巕偑 @a Key 宆偺抣傪曉偟丄
* - 偦偺抣偑儐僯乕僋偱偁傝丄偙偺僙僢僩撪偺婛懚梫慺偲廳暋偟側偄
*
* 応崌偺傒丄惉岟偑曐徹偝傟傞丅
*
* @param[in] aFirst 擖椡奐巒埵抲丅
* @param[in] aLast 擖椡廔椆埵抲丅
*/
template<typename InputIterator>
void InsertL( InputIterator aFirst, InputIterator aLast );
/**
* 梫慺偺嶍彍丅
*
* 埵抲 @a aPos 偺梫慺傪嶍彍偡傞丅
*
* @param[in] aPos 懳徾埵抲丅
*/
void Erase( iterator aPos );
/**
* 梫慺偺嶍彍丅
*
* 抣 @a aVal 傪帩偮梫慺傪嶍彍偡傞丅
*
* @param[in] aVal 懳徾梫慺丅
* @return 嶍彍偟偨梫慺悢丅
* 廳暋傪嫋偝側偄僙僢僩偱偁傞偐傜 1 傑偨偼 0 偱偁傞丅
*/
size_type Erase( const key_type& aVal );
/**
* 梫慺偺嶍彍丅
*
* 斖埻 [@a aFirst, @a aLast) 偺慡梫慺傪嶍彍偡傞丅
*
* @param[in] aFirst 嶍彍奐巒埵抲丅
* @param[in] aLast 嶍彍廔椆埵抲丅
*/
void Erase( iterator aFirst, iterator aLast );
/**
* 慡梫慺偺嶍彍丅
*
* 偙偺僙僢僩偺慡梫慺傪嶍彍偡傞丅
*/
void Clear();
/**
* 梫慺偺扵嶕丅
*
* 抣 @a aVal 傪帩偮梫慺傪扵嶕偡傞丅
*
* @param[in] aVal 懳徾梫慺丅
* @return 尒偮偐偭偨梫慺傪億僀儞僩偡傞斀暅巕丅
* 尒偮偐傜側偗傟偽 End() const 傪曉偡丅
*/
template<typename KT>
iterator Find( const KT& aVal ) const;
/**
* 抣偑堦抳偡傞梫慺偺悢傪曉偡丅
*
* @param[in] aVal 懳徾梫慺丅
* @return 抣 @a aVal 傪帩偮梫慺偺悢丅
* 廳暋傪嫋偝側偄僙僢僩偱偁傞偐傜 1 傑偨偼 0 偱偁傞丅
*/
size_type Count( const key_type& aVal ) const;
/**
* 巜掕抣埲忋偱偁傞嵟弶偺梫慺傪巜偡斀暅巕傪曉偡丅
*
* @param[in] aVal 懳徾梫慺丅
* @return 抣偑 @a aVal 埲忋偱偁傞嵟弶偺梫慺傪億僀儞僩偡傞斀暅巕丅
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -