std::map<std::string, std::string> 和 std::list<std::map<std::string, std::string>> 定义一个方法两种返回类型 封装方法
时间: 2023-09-15 18:19:07 浏览: 44
可以使用函数模板实现封装方法,支持两种不同的返回类型。例如:
```
#include <map>
#include <list>
#include <string>
template <typename T>
T get_data() {
// 实现获取数据的逻辑,此处简化为直接返回一个示例数据
std::list<std::map<std::string, std::string>> data_list = {
{{"key1", "value1"}, {"key2", "value2"}},
{{"key3", "value3"}, {"key4", "value4"}}
};
return data_list;
}
template <>
std::map<std::string, std::string> get_data<std::map<std::string, std::string>>() {
// 实现获取数据的逻辑,此处简化为直接返回一个示例数据
std::map<std::string, std::string> data_map = {{"key1", "value1"}, {"key2", "value2"}};
return data_map;
}
int main() {
std::list<std::map<std::string, std::string>> data_list = get_data<std::list<std::map<std::string, std::string>>>();
std::map<std::string, std::string> data_map = get_data<std::map<std::string, std::string>>();
return 0;
}
```
在示例中,定义了一个名为 `get_data()` 的函数模板,它可以根据模板参数 `T` 的不同返回不同类型的数据。当 `T` 为 `std::list<std::map<std::string, std::string>>` 时,返回一个 `std::list` 容器,其中每个元素都是一个 `std::map` 容器;当 `T` 为 `std::map<std::string, std::string>` 时,返回一个 `std::map` 容器。
在 `main()` 函数中,分别调用 `get_data()` 并将返回值存储到不同类型的变量中。