在 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中文网其他相关文章!