首页 >后端开发 >C++ >C容器可以存储不同类型的数据吗?

C容器可以存储不同类型的数据吗?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-05 06:34:01974浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn