mFrame
載入中...
搜尋中...
無符合項目
ufm::util::Container 結構 參考文件abstract

容器介面,定義所有集合容器的基本操作。 更多...

#include <Container.h>

類別ufm::util::Container的繼承圖:
ufm::util::Collection< void * > ufm::util::Collection< void *const > ufm::util::Collection< ufm::func::Runnable * > ufm::util::Collection< ufm::term::TerminalListener * > ufm::util::Collection< E > ufm::util::IndexedPayloadArena ufm::util::Map< V > ufm::util::Queue< void * > ufm::sys::Stacker ufm::util::Set< E > ufm::util::Queue< ufm::func::Runnable * > ufm::util::Pool ufm::util::Queue< E > ufm::util::ArrayQueue ufm::util::PArraySet

公開方法(Public Methods)

virtual void clear (void) override
 從此集合中刪除所有元素(可選操作)
 
virtual bool isEmpty (void) const override
 檢查此集合是否不包含任何元素
 
virtual int size (void) const override
 返回此集合中的元素數量
 

詳細描述

容器介面,定義所有集合容器的基本操作。

Container 介面定義了所有集合容器必須實作的基本操作方法。 容器用於儲存一組元素,提供對這些元素的基本管理功能, 包括清空、檢查空狀態和獲取大小等核心操作。

設計原則:
  • 提供集合的基本狀態查詢功能
  • 支援可選的清空操作
  • 統一的大小查詢介面
  • 作為更複雜集合類型的基礎介面
實作注意事項:
  • clear() 方法可能是可選操作,實作類別可選擇是否支援
  • size() 方法應該返回實際元素數量,最大值為 INT_MAX
  • isEmpty() 方法應與 size() == 0 的結果一致
使用範例:
// 實作一個簡單的容器類別
class SimpleContainer : public ufm::util::Container {
private:
int* elements;
int capacity;
int count;
bool clearEnabled;
public:
SimpleContainer(bool allowClear = true) : clearEnabled(allowClear) {}
// 實作容器介面
void clear(void) override {
if (clearEnabled) {
elements.clear();
} else {
// 拋出例外或忽略操作
// throw std::runtime_error("Clear operation not supported");
return; // 使用框架的錯誤處理機制
}
}
bool isEmpty(void) const override {
return elements.empty();
}
int size(void) const override {
// 限制在 INT_MAX 範圍內
size_t actualSize = elements.size();
return (actualSize > INT_MAX) ? INT_MAX : static_cast<int>(actualSize);
}
// 額外的容器操作
void add(int value) {
elements.push_back(value);
}
void setClearEnabled(bool enabled) {
clearEnabled = enabled;
}
};
// 基本使用範例
SimpleContainer container;
// 檢查初始狀態
ufm::lang::System::out().print("初始是否為空: ");
ufm::lang::System::out().println(container.isEmpty() ? "true" : "false"); // true
ufm::lang::System::out().print("初始大小: ");
ufm::lang::System::out().println(container.size()); // 0
// 添加元素
for (int i = 1; i <= 5; ++i) {
container.add(i * 10);
}
// 檢查狀態
ufm::lang::System::out().print("添加後是否為空: ");
ufm::lang::System::out().println(container.isEmpty() ? "true" : "false"); // false
ufm::lang::System::out().print("添加後大小: ");
ufm::lang::System::out().println(container.size()); // 5
// 清空容器
try {
container.clear();
ufm::lang::System::out().print("清空後是否為空: ");
ufm::lang::System::out().println(container.isEmpty() ? "true" : "false"); // true
ufm::lang::System::out().print("清空後大小: ");
ufm::lang::System::out().println(container.size()); // 0
} catch (const std::exception& e) {
ufm::lang::System::out().print("清空操作失敗: ");
}
// 容器狀態監控範例
class ContainerMonitor {
private:
public:
ContainerMonitor(ufm::util::Container& cont) : container(cont) {}
void printStatus() const {
ufm::lang::System::out().print("容器狀態: ");
if (container.isEmpty()) {
} else {
}
}
}
bool isAtCapacity(int maxCapacity) const {
return container.size() >= maxCapacity;
}
void safeReset() {
try {
container.clear();
std::cout << "容器已重設" << std::endl;
} catch (...) {
std::cout << "容器重設失敗,可能不支援清空操作" << std::endl;
}
}
};
// 使用監控器
ContainerMonitor monitor(container);
monitor.printStatus(); // 顯示目前狀態
// 檢查容量限制
bool atLimit = monitor.isAtCapacity(10);
std::cout << "是否達到容量限制: " << atLimit << std::endl;
// 安全重設
monitor.safeReset();
PrintStream & println(void)
印出換行字元。
PrintStream & print(bool b, bool newLine=false)
印出布林值,可選擇是否換行。
static ufm::io::PrintStream & out(void)
獲取系統輸出緩衝區
Definition System.h:127
容器介面,定義所有集合容器的基本操作。
Definition Container.h:176
virtual int size(void) const override
返回此集合中的元素數量
virtual void clear(void) override
從此集合中刪除所有元素(可選操作)
virtual bool isEmpty(void) const override
檢查此集合是否不包含任何元素
參閱
ufm::lang::Interface
ufm::util::Collection
ufm::lang::Iterable
1.0.0

函式成員說明文件

◆ clear()

virtual void ufm::util::Container::clear ( void )
pure virtual

從此集合中刪除所有元素(可選操作)

此方法執行後,集合將變為空狀態。請注意,某些容器實作可能不支援此操作。

例外
如果容器不支援清空操作,實作類別可能會拋出例外

實作於 ufm::sys::Stacker, ufm::util::ArrayQueue, ufm::util::IndexedPayloadArena, 及 ufm::util::PArraySet.

◆ isEmpty()

virtual bool ufm::util::Container::isEmpty ( void ) const
pure virtual

檢查此集合是否不包含任何元素

傳回值
true 如果此集合不包含元素,false 否則

實作於 ufm::sys::Stacker, ufm::util::ArrayQueue, ufm::util::IndexedPayloadArena, 及 ufm::util::PArraySet.

◆ size()

virtual int ufm::util::Container::size ( void ) const
pure virtual

返回此集合中的元素數量

如果此集合包含超過 INT_MAX 個元素,則返回 INT_MAX。

傳回值
此集合中的元素數量,範圍為 0 到 INT_MAX

實作於 ufm::sys::Stacker, ufm::util::ArrayQueue, ufm::util::IndexedPayloadArena, 及 ufm::util::PArraySet.


此結構(structure) 文件是由下列檔案中產生: