std::map value使用智能指针
时间: 2024-01-04 19:20:44 浏览: 160
使用智能指针来管理std::map的value是一种有效的方法,可以避免内存泄漏和悬空指针的问题。下面是一个示例代码:
```cpp
#include <iostream>
#include <map>
#include <memory>
int main() {
std::map<std::string, std::shared_ptr<int>> myMap;
// 添加元素
myMap["key1"] = std::make_shared<int>(10);
myMap["key2"] = std::make_shared<int>(20);
myMap["key3"] = std::make_shared<int>(30);
// 访问元素
std::string input;
std::cout << "请输入要查找的键值:";
std::cin >> input;
auto it = myMap.find(input);
if (it != myMap.end()) {
std::cout << "找到了,键值为 " << it->first << ",值为 " << *(it->second) << std::endl;
} else {
std::cout << "未找到该键值" << std::endl;
}
return 0;
}
```
这段代码使用了std::shared_ptr来管理std::map的value,确保了内存的正确释放。在添加元素时,使用std::make_shared来创建智能指针对象,并将其赋值给map的value。在访问元素时,使用find函数查找指定的键值,如果找到了,则通过智能指针的解引用操作符*来获取值。
阅读全文