怎么遍历取得list<map<string,object>>中object中的值
时间: 2023-12-09 21:04:44 浏览: 66
FreeMarker 遍历list<map;string>
你可以使用两个循环嵌套来遍历 `list<map<string,object>>` 中的每个元素和其对应的属性,然后使用 `dynamic_cast` 将 `object` 类型转换为具体的数据类型,例如 `int`、`double`、`string` 等。以下是一个示例代码:
```cpp
#include <iostream>
#include <map>
#include <list>
int main() {
std::list<std::map<std::string, std::object>> data = {
{{"name", std::string("Tom")}, {"age", 18}, {"score", 95.5}},
{{"name", std::string("Jerry")}, {"age", 20}, {"score", 89.0}}
};
for (const auto& map : data) {
for (const auto& [key, value] : map) {
std::cout << key << ": ";
if (auto p = std::get_if<int>(&value))
std::cout << *p << std::endl;
else if (auto p = std::get_if<double>(&value))
std::cout << *p << std::endl;
else if (auto p = std::get_if<std::string>(&value))
std::cout << *p << std::endl;
else
std::cout << "unknown data type" << std::endl;
}
}
return 0;
}
```
输出结果为:
```
name: Tom
age: 18
score: 95.5
name: Jerry
age: 20
score: 89
```
注意,这里假设 `object` 类型只可能是 `int`、`double`、`string` 中的一种。如果有其他类型,需要根据具体情况进行修改。
阅读全文