在 C 中儲存異構物件
在 C 中,在單一容器中儲存不同類型的物件可能是一個挑戰。然而,有幾種方法可以解決這個問題:
1.利用 Boost.any
考慮使用 Boost 函式庫,特別是 boost::any 類別。 Boost.any 提供了一種安全且有效率的方法來儲存任何類型的物件。您可以建立 boost::any 物件的向量或列表,並用各種資料類型填滿它。
2.建立自訂結構或聯合
或者,您可以建立自己的結構或聯合來保存不同類型的物件。定義一個結構或聯合,其中的成員代表每種潛在的資料類型。使用枚舉或指示符指定每個物件的活動類型。但是,使用聯合時請務必小心,因為它們會施加限制,如果使用不當,可能會導致未定義的行為。
範例程式碼
<code class="cpp">// Using a custom structure struct MyContainer { int i; string s; double d; enum {INT, STRING, DOUBLE} type; }; // Using boost::any #include <boost/any.hpp> vector<boost::any> myContainer; myContainer.push_back(10); myContainer.push_back("hello"); myContainer.push_back(3.14);</code>
其他注意事項
雖然這些方法提供了儲存異質物件的解決方案,但質疑這種設計的目的很重要。考慮是否有替代的資料結構或設計模式可以更有效地解決問題。
以上是如何在 C 中儲存異質物件:Boost.any 或自訂結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!