我很好奇C++中Array、Vector、List等多类型容器是如何实现的?我的意思是将整数、字符串和/或 vector/数组放在一个数组/vector 中。
你可能会问我什么情况下需要这样的用法?
我的回答:假设我有一个 XML,其中包含这样的学生信息:
<school tag='town'>
<student>
<name>Robert Largen</name>
<number>87854788</number>
</student>
<student>
<name>Robert Largen</name>
<number>87854788</number>
</student>
<student>
<name>Robert Largen</name>
<number>87854788</number>
</student>
</school>
我处理 XML,好吧,我得到的数字是一个字符序列,但是我想在检索后立即将整数转换为它们的类型,并将它们放入一个我不知道的多类型容器中如何完成呢。以上并非现有项目的真实案例。
问题:我想知道传统上 C++ 是如何解决此类问题的? Boost 是否已成为使用的 super 标准?还是 c++ 及其 tuple
真的拯救了 C++ 程序员的世界?我真的很困惑。
最佳答案
如果您所说的“多类型容器”是指一个包含一组不同类型的容器,那么它可以通过多种方式实现。例如,您可以使用 boost::variant
的容器(使用访问者模式)或 boost::any
的容器,或者创建具有公共(public)基础接口(interface)的多态容器。这实际上取决于此容器的使用方式。
如果您的意思是:一个对象包含一组预定的特定类型的子对象(如 stundent
那里),那么您可以简单地使用 POD 或 struct
/类
。
关于c++ - 传统上如何在 C++ 中实现多类型容器(数组/vector/列表)? (当然没有元组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27417042/