gpt4 book ai didi

c++ - c++中不同类型的数组

转载 作者:行者123 更新时间:2023-11-28 04:18:43 24 4
gpt4 key购买 nike

是否可以制作不同变量类型的数组?例如,

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::same 模板来解决这个问题。我做到了,但它看起来真的很脏。像这样。

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::tuple 需要用特定类型声明,所以我不能使用它们。
  • 仅使用 void* 不能使用索引访问

最佳答案

您可能需要考虑 std::variantstd::arraystd::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
}

关于c++ - c++中不同类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55980787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com