map 插入智能指针作为元素
时间: 2023-12-13 14:27:48 浏览: 147
可以使用C++标准库中的shared_ptr或unique_ptr作为元素类型,实现将智能指针插入map中。
示例代码如下:
```c++
#include <iostream>
#include <map>
#include <memory>
int main() {
std::map<int, std::shared_ptr<int>> myMap;
// 插入元素
myMap.insert(std::make_pair(1, std::make_shared<int>(10)));
myMap.insert(std::make_pair(2, std::make_shared<int>(20)));
myMap.insert(std::make_pair(3, std::make_shared<int>(30)));
// 遍历map中的元素
for (auto& item : myMap) {
std::cout << "key: " << item.first << ", value: " << *(item.second) << std::endl;
}
return 0;
}
```
使用unique_ptr作为元素类型的示例代码如下:
```c++
#include <iostream>
#include <map>
#include <memory>
int main() {
std::map<int, std::unique_ptr<int>> myMap;
// 插入元素
myMap.insert(std::make_pair(1, std::make_unique<int>(10)));
myMap.insert(std::make_pair(2, std::make_unique<int>(20)));
myMap.insert(std::make_pair(3, std::make_unique<int>(30)));
// 遍历map中的元素
for (auto& item : myMap) {
std::cout << "key: " << item.first << ", value: " << *(item.second) << std::endl;
}
return 0;
}
```
需要注意的是,使用unique_ptr作为元素类型时,需要在插入元素时使用std::move()将unique_ptr转移所有权。例如,myMap.insert(std::make_pair(1, std::move(myPtr)))。
阅读全文