【发布时间】:2020-04-17 20:44:24
【问题描述】:
我可以像这样插入地图:
std::map<int, int> testMap;
testMap.insert(std::make_pair(0, 1));
但是如果我用这样的共享指针包围地图:
std::shared_ptr<std::map<int, int>> testSharedMap;
testSharedMap->insert(std::make_pair(0, 1));
它不起作用。我收到运行时错误。
Exception thrown: read access violation.
_Scary was nullptr. occurred
当std::map被std::shared_ptr包围时,我该如何使用它?
【问题讨论】:
-
你需要先分配它。它默认为空。
-
“包围”这个术语很奇怪。指针指向事物;它不会“包围”事物。说
testSharedMap包围了一个地图,就相当于说str在定义了char * str = nullptr;之后包围了一个字符。不要被命名模板的语法误导。您的testSharedMap只是一个指针。一个智能指针,但仍然只是一个指针。
标签: c++ c++11 shared-ptr smart-pointers stdmap