gpt4 book ai didi

c++ - 不同类型 vector 的 vector

转载 作者:太空狗 更新时间:2023-10-29 20:02:03 29 4
gpt4 key购买 nike

我想构建一个 vector vector 。这个问题已经在 SO 上发布了很多次,但我没有找到令人满意的答案。那是因为:

  • 每个 vector 可以有不同的类型
  • 我不知道编译时的类型
  • 我不知道它会包含多少个 vector

基本上我希望能够用伪代码做类似的事情稍后

types = ["char", "int", "double", "int"]
container<vector> x

foreach (type in types)
{
if (type == "char")
x.push_back(vector<char>)
else if (type == "int")
x.push_back(vector<int>)
else
x.push_back(vector<double>)
}

然后我希望能够做例如

x[0].push_back("a")
x[1].push_back(1)
x[2].push_back(3.1416)

我认为 boost::any 可能对我有帮助,但我还不熟悉 boost。

关键是,即使这听起来很奇怪,但这确实是我想做的。我不想要结构 vector ,我真的想要一个包含不同类型的 std::vector 的容器(无论是哪个容器)。原因是因为我正在读取二进制文件。文件的标题说明数据的数量及其类型,但它可以从一个文件更改为另一个文件。因此在编译时无法得知。

最佳答案

或许您可以使用变体 vector ?

using ints = std::vector<int>;
using chars = std::vector<char>;
using doubles = std::vector<double>;
using mixed_data_t = std::vector<std::variant<chars, ints, doubles>>;

如果每个文件都有相同类型的数据,您可以在运行时找出它是什么,然后推回到适当的变体 vector 中。

如果文件有混合数据那么你可以使用

std::vector<std::vector<std::variant<char, int, double>>>;

但您必须检查每次插入。

我非常有信心 boost::any 不是您正在寻找的解决方案,因为每次插入后类型信息都会丢失。

关于c++ - 不同类型 vector 的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47420964/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com