C++std::any与list转换
时间: 2023-10-27 16:04:53 浏览: 166
C++标准库中的std::any是一个类型安全的容器,可以容纳任何类型的值。而std::list则是一个双向链表容器,用于存储一系列元素。
如果想要将一个std::any对象转换为std::list,需要考虑std::any中存储的值类型,因为std::list只能存储特定类型的值。可以使用std::any_cast函数将std::any中的值转换为特定类型,然后将其添加到std::list中。
以下是一个示例代码,将一个std::any对象中的值转换为int类型,并添加到std::list中:
```cpp
#include <any>
#include <list>
#include <iostream>
int main() {
std::any a = 42;
std::list<int> l;
if (a.type() == typeid(int)) {
int value = std::any_cast<int>(a);
l.push_back(value);
}
for (auto i : l) {
std::cout << i << std::endl;
}
return 0;
}
```
在上面的代码中,首先创建了一个std::any对象a,存储了一个int类型的值。然后创建了一个std::list<int>对象l,用于存储int类型的值。
通过std::any的type函数判断a中存储的值的类型是否为int类型,如果是,则使用std::any_cast函数将其转换为int类型,并添加到std::list中。
最后通过for循环遍历std::list中的元素,并输出到控制台。
阅读全文