C 创建一个存储不同类型的向量

C++ creating a vector which stores different typenames

本文关键字:存储 同类型 向量 一个 创建      更新时间:2023-10-16

我想创建一个存储数据类型名称(int,char,bool等(

的向量

我正在寻找:

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(int argc,char** argv)
{
  vector<typenames> v = {int,float,double,bool};
}

如果要存储有限的类型,则可以使用<variant>,例如

#include <variant>
using VarType = std::variant<int, float, double, bool>;
std::vector<VarType> v;
v.push_back(42);
assert(std::holds_alternative<int>(v.front()));
assert(std::get<int>(v.front()) == 42);
v[0] = true;
assert(std::holds_alternative<bool>(v.front()));
assert(std::get<bool>(v.front()));

请注意,如果C 17不可用,则可以使用Boost变体。

no。这是不可能的。C 是一种静态的语言,而不是一种动态类型的语言。您能做的就是将枚举集,用于类型,并将其放入vector中。

enum Type
{
    IntType, FloatType, DoubleType, BoolType
};
vector<Type> v;

或者您可以使用std::variant(C 17(。

您的问题不清楚。也许您需要std::pairstd::tuple来保留不同的项目(具有定义的元素(。