首頁 > 後端開發 > C++ > C容器可以儲存不同類型的資料嗎?

C容器可以儲存不同類型的資料嗎?

Mary-Kate Olsen
發布: 2024-11-05 06:34:01
原創
996 人瀏覽過

Can C   Containers Store Data of Different Types?

C 中的異構容器

在STL 容器分類中,有些要求仍未滿足,即可變大小和異構(不同類型的數據) 。詢問 C 是否為這種用例提供任何解決方案是合理的。

通常,C 容器被設計為保存單一類型的對象,但您可以使用指針或boost::any 來容納不同類型:

使用指針:

您可以儲存指向基本類型的指標容器,允許您儲存從該類型派生的物件:

<code class="cpp">std::vector<MyBaseType*>;</code>
登入後複製

使用boost::any:

Boost 提供了boost::any,它允許你安全地儲存任何類型的物件:

<code class="cpp">using boost::any_cast;
typedef std::list<boost::any> many;</code>
登入後複製

然後你可以使用any_cast 將物件轉換為所需的類型。

使用boost::variant:

Boost::variant 是另一個選項,讓您可以指定一組允許的類型types:

<code class="cpp">std::vector<boost::variant<unsigned, std::string>>;</code>
登入後複製

但是,需要注意的是,與標準STL 容器相比,boost::any 和boost::variant 有一些效能和記憶體開銷。

以上是C容器可以儲存不同類型的資料嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板