c++ - 传统上如何在 C++ 中实现多类型容器(数组/vector/列表)? (当然没有元组)

标签 c++ arrays boost tuples

我很好奇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/

相关文章:

c++ - 从函数返回 boost streambuf

Javascript:如何将一个数组的组件传输到另一个数组并限制传输的项目数量

c++ - 使用 BOOST_DLL_ALIAS 时了解并修复此错误消息

c++ - 错误 MSB6006 : "cmd.exe" exited with code

c++ - 传递派生共享指针的 vector ?

c++ - 在 QLabel 中显示图像

当一个常量取另一个常量值时,C++ 常量初始化

php - 如何向表中插入多条数据

Java 添加到 ArrayList<String> 然后转换为 Object[][]

r - xgboost:线性 boost 器 gblinear 中使用了哪些参数?