结合上面的代码,任意互相嵌套的map、vector且维度不固定数据的也可以通过上面代码打印吗?吗?
时间: 2024-03-13 20:45:25 浏览: 58
对于任意互相嵌套的map、vector且维度不固定的数据,可以通过递归实现打印。具体实现可以参考以下示例代码:
```
#include <iostream>
#include <map>
#include <vector>
#include <typeinfo>
template<typename T>
void print(const T& t, int depth = 0)
{
for (auto i : t)
{
for (int j = 0; j < depth; ++j) std::cout << " ";
std::cout << "[" << i.first << "] ";
if (typeid(i.second).name()[0] == 'N')
{
std::cout << i.second << std::endl;
}
else
{
std::cout << std::endl;
print(i.second, depth + 1);
}
}
}
int main()
{
std::map<std::string, std::vector<std::map<int, std::string>>> data = {
{"A", {
{
{1, "A1"},
{2, "A2"},
{3, "A3"}
},
{
{4, "A4"},
{5, "A5"},
{6, "A6"}
}
}},
{"B", {
{
{1, "B1"},
{2, "B2"}
},
{
{3, "B3"},
{4, "B4"},
{5, "B5"}
},
{
{6, "B6"}
}
}}
};
print(data);
return 0;
}
```
这段代码可以正确地打印出任意维度的数据,包括嵌套的map和vector。注意,这里使用了C++的RTTI(运行时类型识别)功能,需要开启编译器的RTTI选项。
阅读全文