将map<string,string>转为map<string,object>
时间: 2023-11-10 12:09:50 浏览: 258
java 读取csv 并转为Map<String,Object>
如果你想将 `map<string, string>` 转换为 `map<string, object>`,你需要定义一个 `object` 类型的指针作为 `map` 的值类型,然后将 `string` 类型的值转换为 `object` 类型的指针,再将其插入到新的 `map` 中。以下是一个示例代码:
```c++
#include <iostream>
#include <map>
#include <string>
class Object { // 定义一个 Object 类型,可以是任何类型的对象
public:
Object() {}
virtual ~Object() {}
};
class StringObject : public Object { // 定义一个 StringObject 类型,继承自 Object 类型
public:
StringObject(const std::string& str) : str_(str) {}
virtual ~StringObject() {}
std::string str() const { return str_; }
private:
std::string str_;
};
int main() {
std::map<std::string, std::string> string_map = {
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"}
};
std::map<std::string, Object*> object_map;
for (const auto& pair : string_map) {
object_map.insert(std::make_pair(pair.first, new StringObject(pair.second)));
}
for (const auto& pair : object_map) {
std::cout << pair.first << ": " << dynamic_cast<StringObject*>(pair.second)->str() << std::endl;
}
return 0;
}
```
这里我们定义了两个类型,一个是 `Object`,可以是任何类型的对象,另一个是 `StringObject`,继承自 `Object`,表示字符串类型的对象。我们将 `map<string, string>` 转换为 `map<string, Object*>`,然后遍历新的 `map`,输出每个键值对的值。需要注意的是,在使用完 `Object` 类型的指针后,需要手动释放内存,避免内存泄漏。
阅读全文