std::any存储在std::vector中
时间: 2024-09-24 11:01:33 浏览: 47
使用c++实现boost::any类
尽管`std::any`本身不是一个容器,但你可以将它存储在`std::vector`或其他容器中,因为它支持复制。这里是一个简单的示例说明如何在`std::vector`中存储和访问`std::any`对象:
```cpp
#include <iostream>
#include <vector>
#include <any>
namespace std {
class any;
} // namespace std
int main() {
// 创建一个std::vector来存储std::any对象
std::vector<std::any> vec;
// 存储不同类型的数据
vec.push_back(std::any(42)); // 储存整数
vec.push_back(std::any("Hello")); // 储存字符串
// 访问并转换数据
for (const auto& a : vec) {
if constexpr (std::is_same_v<decltype(a), int>) {
int value = std::any_cast<int>(a);
std::cout << "Integer value: " << value << '\n'; // 输出整数值
}
else if constexpr (std::is_same_v<decltype(a), std::string>) {
const std::string* str = std::any_cast<const std::string*>(a);
std::cout << "String value: " << *str << '\n'; // 输出字符串值
}
}
return 0;
}
```
在这个例子中,我们首先创建了一个`std::vector<std::any>`,然后添加了一些不同类型的值(整数和字符串)。在循环中,我们使用`std::any_cast`来根据存储的类型转换`std::any`。
阅读全文