首页  >  文章  >  后端开发  >  C 可以在单个容器中存储不同类型的数据吗?

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

DDD
DDD原创
2024-11-06 03:41:02302浏览

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