在c++语言中,有什么 写法可以让不同类型数据根据数组小标的变化来取出来?
时间: 2024-11-25 17:11:40 浏览: 14
在C++中,如果你想让不同类型的变量根据数组下标变化而自动适应存储内容,你可以使用模板和`std::variant`容器。`std::variant`允许你在同一个位置存储多种类型的数据,这使得它非常适合动态类型的需求。
例如:
```cpp
#include <variant>
#include <string>
template<typename... Types>
using VariantArray = std::array<std::variant<Types...>, 5>;
// 使用模板实例化一个能存储int、float和std::string的数组
VariantArray<int, float, std::string> varArray;
// 动态存储不同类型的数据
varArray[0] = 10; // 存储整型
varArray[1] = 3.14f; // 存储浮点型
varArray[2] = "Hello"; // 存储字符串
// 根据索引获取数据并转换类型
int intVal = std::get<int>(varArray[0]);
float floatVal = std::get<float>(varArray[1]);
// 如果尝试访问未知类型,会有类型错误异常
auto strVal = std::get<std::string>(varArray[3]); // 这里会抛出std::bad_variant_access异常
阅读全文