C 中不同类型的数组
Array of different types in c++
是否可以制作不同变量类型的数组?例如,
int p1[]={1, 2, 3};
float p2[]={1.1, 2.2, 3.3};
double p3[]={...};
...
...
arr[0].ptr = p1;
arr[1].ptr = p2;
...
首先,我尝试用枚举,void* ptr和std ::与模板相同。我做到了,但看起来真的很脏。这样。
enum dataType{...}
struct arr{
void *p
dataType datatype
}
template<typename T>
void insert(T x){
if(std::is_same<T, int*>) /* ... */
else if(std::is_same<T, float*>) /* ... */
...
}
void foo(int a, int b){
std::cout<<(TYPE_CHANGE_SOMEHOW)arr[a].ptr[b]<<std::endl;
}
// and much more
所以我正在寻找其他方式。
- std ::元组需要用特定类型声明,所以我不能使用它们。
- 仅使用void*无法与索引访问一起使用
您可能需要考虑std ::变体的std::array
或std::vector
:
std::vector<std::variant<int, float>> vvec;
vvec.push_back(42);
vvec.push_back(3.1415);
try
{
std::get<float>(vvec[0]); // vvec[0] contains int, not float: will throw
}
catch (const std::bad_variant_access&)
{
// Handle exception
}
相关文章:
- 具有纯虚函数和指针数组对象类型的父类的指针数组
- 多维数组的类型、名称是什么?
- 共享_ptr中多功能数组的类型是什么
- 为什么 std::variant 不能容纳数组对象类型,而联合可以?
- 为什么数组(字符串类型)的大小是 24 字节,带有单个空格元素
- 数组的类型无效
- 以符合标准的方式用与数组相同类型的成员重新解释结构
- 从数组的类型中找到元素的类型
- 接受来自函数的二维数组(int 类型)并将其返回到主函数
- C++从字符数组返回类型为T的指针
- 为什么数组的类型推断会将指向第一个的指针优先于对数组的引用
- 函数指针数组的类型是什么
- 整数数组返回类型
- 如何在 c++ 中填充指针数组,类型 char
- int 数组的类型是什么
- 使用类型的参数包和相应值的输入数组构造类型
- 调用另一个函数的私有成员-数组和类型的问题
- 从数组的类型中获取数组的大小
- 为什么boost::fusion序列中的struct数组成员类型不能正确推导
- 指针数组和类型转换