首頁 > 後端開發 > C++ > 主體

如何用 C 語言建立異質容器?

Mary-Kate Olsen
發布: 2024-11-05 10:54:02
原創
309 人瀏覽過

How Can I Create Heterogeneous Containers in C  ?

C 中的異構容器

您引用的圖形說明了基於固定/可變大小、資料類型、排序等特徵的各種STL 容器和存取類型。然而,它缺少一個同時支援可變大小和異構性(容納不同資料類型)的容器。

在 C 中,大多數容器被設計為使用模板來保存特定類型的物件。雖然指標可以允許異質存儲,但它們也有限制。此外,void* 容器的類型安全性較差。

對於可以儲存不相關類型的真正異質容器,請考慮以下選項:

  • Boost.Any :

    Boost.Any 提供了一種儲存任何類型的通用方法,可讓您建立包含整數、字串甚至更複雜物件的容器。

    <code class="cpp">using boost::any;
    std::list<boost::any> values;
    values.push_back(42);
    values.push_back("Hello, world!");</code>
    登入後複製
  • Boost.Variant:

    Boost.Variant 與 Boost.Any 類似,但需要在編譯時指定允許的類型。這增強了類型安全性,同時仍啟用異質儲存。

    <code class="cpp">using boost::variant;
    std::vector<boost::variant<int, std::string>> vec;
    vec.push_back(44);
    vec.push_back("C++");</code>
    登入後複製

這些函式庫允許建立可以靈活儲存和存取各種類型資料的容器。雖然 STL 沒有直接提供,但這些替代方案為 C 中的異質資料儲存提供了解決方案。

以上是如何用 C 語言建立異質容器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!