首頁  >  文章  >  後端開發  >  C 可以在單一容器中儲存不同類型的資料嗎?

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

DDD
DDD原創
2024-11-06 03:41:02235瀏覽

Can C   Store Data of Different Types in a Single Container?

C 中的異構容器

問題:

STL 容器分類圖顯示不存在符合下列條件的STL容器:大小可變且異構。 C 是否缺乏儲存不同類型資料的解決方案?

答案:

雖然C 容器通常設計用於保存單一類型的對象,但有一些方法可以儲存不同類型的資料:

  • 指標: 使用指向公共基類物件的指標容器,讓您可以儲存不同衍生類型的物件。
  • boost::any: 將任何類型的物件儲存在容器中。這使用模板元編程方法來安全地處理不同類型。
  • boost::variant: 與 boost::any 類似,但編譯時需要指定允許的型別。

程式碼範例:

<code class="cpp">#include <list>
#include <boost/any.hpp>

using boost::any_cast;
typedef std::list<boost::any> many;

int main() {
    many values;
    append_int(values, 10);
    append_string(values, "Hello");

    if (is_int(values.front())) {
        int number = any_cast<int>(values.front());
        std::cout << number << std::endl;
    }

    return 0;
}</code>

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn