【问题标题】:Array with elements of different types [duplicate]具有不同类型元素的数组[重复]
【发布时间】:2021-02-04 15:28:46
【问题描述】:

有没有办法在 C++ 中拥有一个由不同类型组成的数组?

例如:

#include<iostream>
using namespace std;

int main() {
    string cars[5] = {"BMW", "Audi", "Ferrari", "Lamborghini", "McLaren"};
    return 0;
}

这就是我们通常在 C++ 中创建具有指定类型的数组的方式。

但是我们可以在 C++ 中创建这样的数组吗?

["BMW", 14, "Audi", 25, "Ferrari", 3, "Lamborghini", 7, "McLaren", 0]

如果我不能,是否有任何库或框架可以用来执行此操作?

【问题讨论】:

  • 我看到了XY problem。你为什么需要这个?您是否想要一个结构数组或std::pairs?或者可能是 std::map 而不是数组?
  • 我来自python和js,所以我对结构不是很熟悉,所以我想知道你是否可以对数组做同样的事情。
  • 您可以使用结构数组来完成。这不是两个不同的选择。很可能它们应该结合起来解决您遇到的问题。
  • 一种“我要像 Python 一样编程 C++”的态度会让你一事无成。您需要花一些时间来学习 C++,并意识到它与 Python 相比有自己的优势和劣势。

标签: c++ arrays


【解决方案1】:

有没有办法让一个数组包含不同的类型 C++?

是的,您可以使用std::any(C++17 起):

std::any arr[] { "BMW", 14, "Audi", 25, "Ferrari", 3, "Lamborghini", 7, "McLaren", 0 };    
// (use vector or std::array instead)

您也可以使用 sum 类型,例如 std::variant(C++17 起)或 std::tuple

【讨论】:

  • std::any 是个坏主意。 OP 应该学习使用 C++ 的强类型系统,而不是试图模仿 Python。
  • 我同意模仿 python 是一个坏主意(不一定是为了学习目的),但我认为假装这些选项不存在也是不好的
猜你喜欢
  • 2021-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 2012-04-17
  • 2013-09-14
  • 2018-12-11
  • 1970-01-01
相关资源
最近更新 更多