![]() |
mFrame
|
基於陣列的集合容器實作 更多...
#include <PArraySet.h>
公開方法(Public Methods) | |
PArraySet (ufm::lang::Memory memory) noexcept | |
使用指定記憶體建構 PArraySet 物件 | |
PArraySet (int length) | |
使用指定長度建構 PArraySet 物件 | |
PArraySet (PArraySet &other) noexcept=default | |
複製建構子 | |
PArraySet (PArraySet &&other) noexcept=default | |
移動建構子 | |
virtual | ~PArraySet (void) override |
析構函數 | |
template<typename E > | |
operator const Set< E > & (void) const | |
轉換操作符,將 PArraySet 轉換為指定類型的常量引用陣列 | |
template<typename E > | |
operator Set< E > & (void) | |
轉換操作符,將 PArraySet 轉換為指定類型的陣列引用 | |
virtual bool | add (void *v) override |
將元素添加到集合中 | |
virtual bool | remove (void *v) override |
從集合中移除指定元素 | |
virtual bool | replace (void *oldValue, void *newValue) override |
替換集合中的指定元素 | |
virtual bool | contains (void *v) const override |
檢查集合是否包含指定元素 | |
virtual void | clear (void) override |
清除集合中的所有元素 | |
virtual bool | isEmpty (void) const override |
檢查集合是否為空 | |
virtual int | size (void) const override |
返回集合中的元素數量 | |
virtual void | forEach (ufm::func::Consumer< void *& > &action) override |
遍歷集合中的所有元素,對每個元素執行指定操作 | |
virtual void ** | elementAt (int index) const override |
獲取集合中指定索引處的元素指標 | |
virtual int | nextIndex (int index) const override |
返回當前索引的下一個有效索引 | |
virtual ufm::util::Iterator< void * > | begin (void) override |
返回指向集合開始位置的迭代器 | |
virtual ufm::util::Iterator< void * > | end (void) override |
返回指向集合結束位置的迭代器 | |
![]() | |
void * | operator new (size_t n) |
使用運算子 new 分配記憶體 | |
void * | operator new (size_t n, void *p) |
在指定記憶體上調用運算子 new | |
virtual ufm::lang::Object & | getObject (void) override |
取得對應的 Object 物件 | |
void | delay (int milliseconds) const |
延遲指定的毫秒數進行執行緒等待 | |
bool | equals (Object *object) const |
判斷與另一物件是否為相同參照(指標型態比較) | |
bool | equals (Object &object) const |
判斷與另一物件是否為相同參照(參照型態比較) | |
void | wait (void) const |
使當前線程等待直到被通知 | |
bool | wait (int timeout) const |
等待通知或超時 | |
bool | yield (void) const |
讓執行緒讓渡控制權給同優先權的下一個執行緒 | |
int | lock (void) const |
核心鎖定,鎖定期間禁止線程切換 | |
int | unlock (void) const |
核心解鎖 | |
ufm::sys::Thread * | currentThread (void) const |
取得當前執行緒指標 | |
virtual int | hashcode (void) const |
返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。 | |
![]() | |
virtual | ~Interface (void)=default |
虛擬析構函式 | |
![]() | |
virtual bool | add (E *v) override |
將指定元素添加到此集合中(可選操作)。 | |
virtual bool | remove (E *v) override |
從此集合中刪除指定元素(可選操作)。 | |
virtual bool | replace (E *oldValue, E *newValue) override |
替換此集合中的指定元素。 | |
virtual bool | contains (E *v) const override |
檢查此集合是否包含指定元素。 | |
公開屬性 | |
int const | vLength |
陣列長度 | |
基於陣列的集合容器實作
PArraySet 是一個基於固定大小陣列的集合實作,使用 ufm::lang::Memory 來管理記憶體, 實作了 Set 介面提供添加、移除、查找等集合操作,確保集合中不會有重複元素。
適用於嵌入式環境,使用預先分配的記憶體避免動態分配,提供可預測的記憶體使用模式, 集合的最大容量在建構時確定且不可更改。
特色功能:
|
noexcept |
使用指定記憶體建構 PArraySet 物件
使用提供的記憶體物件建立一個 PArraySet,記憶體大小決定了集合的最大容量。 容量計算為記憶體大小除以指標大小。
memory | 用於儲存集合元素的記憶體物件 |
|
inline |
使用指定長度建構 PArraySet 物件
建立一個可容納指定數量元素的 PArraySet,自動分配所需的記憶體。 這是最常用的建構方式,提供了簡潔的介面。
length | 集合的最大容量(元素個數) |
|
defaultnoexcept |
|
defaultnoexcept |
|
overridevirtual |
|
overridevirtual |
將元素添加到集合中
如果集合中尚未包含指定的元素,則將其添加到集合中。 由於這是一個集合(Set),不允許重複元素。
v | 要添加的元素指標 |
|
overridevirtual |
返回指向集合開始位置的迭代器
建立並返回一個指向集合第一個元素的迭代器。 迭代器可用於遍歷集合中的所有元素。
|
overridevirtual |
|
overridevirtual |
檢查集合是否包含指定元素
檢查集合中是否存在與指定指標相等的元素。
v | 要檢查的元素指標 |
|
overridevirtual |
獲取集合中指定索引處的元素指標
返回指向集合內部陣列中指定索引位置元素的指標。 這允許直接訪問和修改集合中的元素。
index | 要獲取的元素索引(0 到 size()-1) |
|
overridevirtual |
返回指向集合結束位置的迭代器
建立並返回一個指向集合末尾的迭代器。 此迭代器用於標識遍歷的結束點。
|
overridevirtual |
遍歷集合中的所有元素,對每個元素執行指定操作
對集合中的每個非空元素調用提供的 Consumer 函數。 遍歷順序與元素在內部陣列中的順序相同。
action | 對每個元素執行的操作,必須實作 Consumer<void*&> 介面 |
|
overridevirtual |
|
overridevirtual |
返回當前索引的下一個有效索引
從給定索引開始尋找下一個包含非空元素的索引位置。 用於實作迭代器模式和跳過空槽。
index | 當前索引 |
|
inline |
|
inline |
|
overridevirtual |
從集合中移除指定元素
如果集合包含指定的元素,則將其從集合中移除。 移除操作會保持其他元素的相對順序。
v | 要移除的元素指標 |
|
overridevirtual |
替換集合中的指定元素
如果集合包含指定的舊元素,則將其替換為新元素。 如果新元素已經存在於集合中(除了要替換的位置),操作會失敗。
oldValue | 要被替換的舊元素指標 |
newValue | 用於替換的新元素指標 |
|
overridevirtual |
返回集合中的元素數量