C 创建一个存储不同类型的向量
C++ creating a vector which stores different typenames
我想创建一个存储数据类型名称(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::pair
或std::tuple
来保留不同的项目(具有定义的元素(。
相关文章:
- 存储模板类型以强制转换回派生<T>
- 在C++中,如何在变量中正确存储 BYTE 类型?
- 不存储类类型<>
- 如何在结构中存储模板类型
- 如何在C++变量中存储任何类型的函数
- C 创建一个存储不同类型的向量
- C++联合如何知道其中存储的类型以及要调用哪个析构函数
- 如何在矢量中存储不同类型的对象
- 用于存储多种类型值的 STL 容器
- RocksDB是存储同质对象的好选择吗
- 是否允许访问联合成员的公共基类,而不管存储的类型如何
- 如何访问和存储向量类型的结构成员
- 在同一C++中存储不同类型的枚举
- 获取适当的存储值类型?
- 在 C++ 的向量/数组中存储不同类型的元素
- 存储抽象类型的对象
- 如何在用户数据中存储值类型
- 如何在 std::map 中存储"对象类型"?
- 试图在C++中打印存储在类型对象数组中的信息
- 存储同一类型的两个相关值的惯用方法