我想创建一个存储数据类型名称的向量(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};
}
答案 0 :(得分:5)
如果要存储的类型有限,则可以使用<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 variant。
答案 1 :(得分:3)
不。这是不可能的。 C ++是静态类型的语言,而不是动态类型的语言。您可以做的是为类型设置一组枚举并将它们放入vector
中。
enum Type
{
IntType, FloatType, DoubleType, BoolType
};
vector<Type> v;
或者您可以使用std::variant
(C ++ 17)。
您的问题不清楚。也许您需要std::pair
或std::tuple
来保留不同的项目(具有定义数量的元素)。